检查UITextView是否具有url(布尔值)或提取Url

时间:2016-07-16 02:49:33

标签: objective-c uitextview nsurl nsdatadetector

我知道我可以textView.dataDetectorTypes = UIDataDetectorTypeLink;自动检测链接。

现在这看起来很简单,但我无法找到检查UITextView的dataDetector是否实际找到匹配项的方法。

我正在寻找类似BOOL hasLink = textView.hasLink;BOOL hasLink = textView.text.hasLink;的内容,或者甚至可以提取NSDataDetector的引用(我可能会使用NSDataDetector方法检查,但我必须确认,只是抛出想法)

是否没有内置的检查方法,或者我是否必须单独确认?

编辑:

所以我只是用我自己的NSDataDetector来做这个,(下面的代码),但问题仍然是确实无法提取检测到的数据类型或确认是否存在检测到的数据类型一个UITextView

这是我以前检查自己的方式:

-(BOOL) doesTextHaveLink:(NSString *)text {
    NSDataDetector *linkDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
    NSArray *matches = [linkDetector matchesInString:text options:0 range:NSMakeRange(0, [text length])];
    for (NSTextCheckingResult *match in matches) {
        if ([match resultType] == NSTextCheckingTypeLink) {
            return YES;
        }
    }
    return NO;
}

1 个答案:

答案 0 :(得分:0)

plz使用此代码如果textview具有url

,则返回yes
-(BOOL)checkUrl:(NSString *)strText{
    NSString *urlRegEx =
    @"(http|https)://((\\w)*|([0-9]*)|([-|_])*)+([\\.|/]((\\w)*|([0-9]*)|([-|_])*))+";
    NSPredicate *urlTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", urlRegEx]; 
    return [urlTest evaluateWithObject:strText];
}