确定触发了哪个UITextView UIDataDetectorType

时间:2017-10-06 03:53:59

标签: ios objective-c

我使用UITextView的委托方法textView:shouldInteractWithURL:inRange:interaction:来捕获网址点击。有没有办法确定哪个UIDataDetectorTypes触发了委托方法?

我对电子邮件,电话号码,地址(地理位置),日期/时间等有不同的自定义方法。现在,我能看到的唯一方法是使用RegEx来猜测"猜测"使用URL组合的类型(对http / https urls以外的任何内容都没用)和通过

获取的原始数据
- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange interaction:(UITextItemInteraction)interaction {
    NSString *rawText = [textView.text substringWithRange:characterRange];
    // Do fancy stuff with the data

    // Hacky way to test if the url tapped isn't an email/map address
    BOOL isURL = [[URL absoluteString] isEqualToString:[textView.text substringWithRange:characterRange]];

    // Return no when the URL can be captured and custom methods used. Otherwise return YES.
    return NO;
}

编辑:我偶然发现了NSDataDetector可能有所帮助,但我不知道从哪里开始

1 个答案:

答案 0 :(得分:0)

我相信我找到了解决问题的方法。我发布了我的回答,以便其他任何在这个问题上苦苦挣扎的人都可以看到我做了什么(并且如果不是很好的话,可能有助于改进我的代码。)

loop size = 4
neg loop size = 18446744073709551612

显然它是一个不完整的实现,但它显示了如何使用内置的RegEx子类来获取不同的类型