iOS 7中UITextView链接检测

59

我有一个通过Interface Builder管理的UITextView。在数据检测方面,我已经勾选了“链接”。在iOS 6中,一切都正常工作,链接被突出显示并且可以点击。然而,在iOS 7中,所有链接仍然只是普通文本。可编辑和可选择的复选框未被勾选。

可能需要注意的是,UITextView是容器视图的子视图,该容器视图再次位于UIScrollView中。


https://dev59.com/cXNA5IYBdhLWcg3wWseK#37745157 - Kuldeep Singh
17个回答

2

在类似的设置中,取消UITextView的滚动功能对我有用。


2

将色调颜色更改为其他颜色实际上是有效的。 但是,如果启用了可选择功能,则色调也将是相同的颜色。


这对我解决了问题。我的链接可以工作但不可见。原来需要将色调颜色设置为适当的颜色,它会用于链接。感谢Desmond。 - ophychius

1

以上的方法对我都没用,我采用了以下方法:

[self.textView setDataDetectorTypes:UIDataDetectorTypeNone];
[self.textView.setTextColor:[UIColor whiteColor]];
[self.textView setDataDetectorTypes:UIDataDetectorTypeNone];

我用我的TextView来检测所有类型,未检测到的颜色设置为白色。您可以更改代码以表示适当的颜色和链接类型以进行检测。

1

虽然这个帖子有些老,但我没有看到对于Swift有用的答案,所以我在这里提供Swift 2.2的解决方案。

textView.dataDetectorTypes = UIDataDetectorTypes.Link
textView.selectable = true

1
将UITextView的滚动属性设置为No。它会起作用... Self.textView.ScrollingEnable = NO;

0

这个解决方法对我有效:

textView.selectable = YES;
textView.delegate = self;

- (void) textViewDidChangeSelection:(UITextView *)textView;
{
    NSRange range = NSMakeRange(NSNotFound, 0.0);
    if ( range.length && !NSEqualRanges(range, textView.selectedRange) ) {
        textView.selectedRange = range;
    }
}

0
如果您正在以编程方式添加UITextview,请添加以下行:
        _textView.userInteractionEnabled = YES;
        _textView.dataDetectorTypes = UIDataDetectorTypeLink;
        _textView.scrollEnabled = NO;
        _textView.editable = NO;

这对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接