objective c - 如何判断 NSURL 是否被格式化为 phone 数字

objective c - How to tell if an NSURL is formatted as a phone number

我有一个 iOS 应用程序,其 UITextView 可以自动检测 link 和 phone 数字。我想要做的是在使用此单击 link 时进行拦截:

-(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange

然后我需要检查 URL 是网络 link 还是 phone 号码。

有人知道怎么做吗?我能想到的唯一方法是将其转换为字符串并检查它是否以 @"tel" 开头,但必须有更好的方法。谢谢!

有更好的方法。

一个NSURL对象有一个scheme属性,可以识别URL是什么类型

if ([URL.scheme isEqualToString:@"tel"]) {
     // handle telephone case here
} else {
    // handle http or other case here
}

文档说在大多数情况下可以将方案视为协议:

NOTE

The term “protocol” is also sometimes used when talking about network-based URL schemes. However, not all URL schemes are networking protocols—data:// URLs, for example.

查看 NSURL 文档的这一部分,了解有关如何拆分 URL 以使用您需要的部分的更多信息: Accessing the Parts of the URL(截至 2015 年 5 月 21 日有效 link)