我有一个带有 UITextView 的 iOS 应用程序,它可以自动检测链接和电话号码。我想要做的是在使用此链接单击链接时进行拦截:
-(BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange
然后我需要检查 URL 是网络链接还是电话号码。
有谁知道如何做到这一点?我能想到的唯一方法是将其转换为字符串并检查它是否以 @"tel"开头,但必须有更好的方法。谢谢!
最佳答案
有一个更好的办法。
一个 NSURL 对象有一个 scheme 属性,它会识别它是什么类型的 URL。
if ([URL.scheme isEqualToString:@"tel"]) {
// handle telephone case here
} else {
// handle http or other case here
}
文档说,在大多数情况下,该方案可以被视为协议(protocol):
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 日的有效链接)
关于ios - objective-c - 如何判断 NSURL 是否被格式化为电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30381408/