我选择了检测Links
的UITextView,并取消选中行为selectable and editable
。它会检测带有前缀“www”或“http://”或“https:// etc”的链接,但它根本无法检测到goole.co.in。任何解决方案。
答案 0 :(得分:2)
这可能不是您问题的解决方案,但我根据您的问题找到了一个奇怪的问题
例如:
txtTest.userInteractionEnabled = true;
txtTest.selectable = true
txtTest.dataDetectorTypes = .Link;
txtTest.text = "stackoverflow.com"
当我编写此代码时,它会检测textview中的链接,对于'google.co.uk','google.co.us','google.com',如果它写任何一个它们在文本中检测到链接
但正如你在问题中提到的,如果我们将文本更改为'google.co.in'它没有检测到链接,我尝试过'google.co.test'这也没有检测到链接
因此,它可能与'dataDetectorTypes'的默认链接检测模式有关,否则您的代码可能适用于其他网址
如果您有静态链接链接,可以检查是否在textview
中检测到此链接另外,作为另一种选择,您可以尝试 UIWebView ,如果它适用于您的情况
答案 1 :(得分:0)
或者,如果Apple没有提升您的需求,请自行检查。运行UITextView的文本输出并查找特定关键字,例如'.co.in',如果它们存在,则突出显示它们(或其他)。
NSString * text = textView.text;
if ([text containsString:".co.in"]){
//Indian domain found
}
<强>更新强>
您可以使用attributionStrings突出显示字符串中的特定文本:
NSMutableAttributedString * attributedString = [[NSMutableAttributedString alloc] initWithString:myString];
UIFont * boldFont = [UIFont fontWithName:@"HelveticaNeue-Bold" size:16.0f];
NSDictionary * attributedDict = [NSDictionary dictionaryWithObjectsAndKeys:boldFont, NSFontAttributeName, [UIColor blueColor], NSForegroundColorAttributeName, nil];
NSRange range = [myString rangeOfString:@"www.google.co.in"];
[attributedString setAttributes:attributedDict range:range];
[myLabel setAttributedText:attributedString];
关于触摸,可以在整个UILabel上放置一个水龙头手势识别器,然后使用以下方法检测水龙头的位置:
-(void)longPressDetected:(UILongPressGestureRecognizer *)sender {
CGPoint touchLocation = [sender locationInView:myLabel];
}
并从那里检查点按位置是否与已知的单词框重叠。
我觉得可能有更简单的方法来实现你想做的事情,但我不记得它是什么。