objective c - 如何判断NSURL是否格式化为电话号码

spa*_*oth 1 validation objective-c nsurl phone-number ios

我有一个带有UITextView的iOS应用程序,可自动检测链接和电话号码.我想要做的是使用以下链接点击链接时拦截:

-(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
Run Code Online (Sandbox Code Playgroud)

然后我需要检查URL是Web链接还是电话号码.

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

ben*_*een 6

有一个更好的办法.

NSURL对象具有scheme属性,该属性将标识它的URL类型.

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

文档说在大多数情况下,该方案可被视为协议:

注意

在谈论基于网络的URL方案时,有时也使用术语"协议".但是,并非所有URL方案都是网络协议 - 例如data:// URL.

有关如何拆分URL以使用所需部件的详细信息,请查看NSURL文档的此部分: 访问URL的部分(截至2015年5月21日的有效链接)