我遵循了这个:UILabel and NSLinkAttributeName: Link is not clickable和UITextView link is clickable, but when I click it, Safari doesn't open,但无济于事。
我有:
uitextView.attributedText = ... some attributed string "http://google.com" ...
"链接检测","可选"和"启用用户交互"已启用。 "可编辑的"被禁用。
我还实施了UITextViewDelegate
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)url inRange:(NSRange)characterRange
{
return YES;
}
但是,链接显示为蓝色,但是当我点击时,没有任何反应。
答案 0 :(得分:2)
我有同样的问题。没有任何帮助。
问题是,我将UITextView添加到ScrollView,然后使用sizeToFit
。
例如:我有view.frame
(0,0,320,440)。和ScrollView contentSize(0,0,320,1000)
view.frame
中的链接可以正常工作,但是当您向下滚动时 - 不是。
当我向下滚动并点按UITextView时,我试图查看正在选择的视图。我添加了UITapGestureRecognizers并发现当我在UITextView的边界中点击self.view框架的边界时,它点击了UITextView。但是当我向下滚动时 - 水龙头会在ScrollView上识别为点按。 换句话说,它就像是自我视图边界的UITextView剪辑框架。
修改强> 我发现了问题:
我有View - ScrollView - ContentView - Elements
层次结构。所以有一段时间,当ScrollView比ContentView大时,只能在ContentView的边界中点击链接。
要解决此问题,我删除了ContentView并将所有元素放置到ScrollView。希望这个答案能帮到某人:)
答案 1 :(得分:1)
尝试采用这种方法:
NSString *clickMe = [NSString stringWithFormat:@"%@", word];
NSMutableAttributedString * str2 = [[NSMutableAttributedString alloc] initWithString:word];
[str2 addAttribute: NSLinkAttributeName value:[NSURL URLWithString:[NSString stringWithFormat:@"https://twitter.com/%@",linkWord]] range:NSMakeRange(0, clickMe.length)];
// replace with link
[YourAttributedString replaceCharactersInRange:wordRange withAttributedString:str2];