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

标签 ios objective-c validation nsurl phone-number

我有一个带有 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/

相关文章:

ios - 如何在 iOS Swift 中隐藏视频窗口并在结束后再次显示?

iOS 错误代码=-1003 “A server with the specified hostname could not be found.”

objective-c - 未指定大小的多维数组作为实例变量?

objective-c - EXC_BAD_ACCESS 在 block 中使用 weakSelf 时

javascript - ink.sapo.pt 如何使用此表单验证(onSuccess 回调)

ios - Swift 3 - 只有一个项目的队列

iOS Facebook 登录助手 sdk,如 Parser

objective-c - 抑制 UIViewController 子类的 Xcode 不兼容指针类型

ruby-on-rails - Rails 仅在更改特定字段值时更新验证

validation - IE10兼容模式输入类型=email/url/number