使用NSDataDetector在Swift(iOS)中检测并打开邮政地址

使用NSDataDetector在Swift(iOS)中检测并打开邮政地址,ios,swift,nsdatadetector,Ios,Swift,Nsdatadetector,我目前有一个地址检测处于活动状态的UITextView,它可以检测此字段中的任何地址,并将它们变成一个可单击的链接,打开以地址为焦点的Apple地图。我真的很喜欢这个功能,但我的用户更希望有一个按钮来点击,而不是内联链接。 考虑到这一点,我对NSDataDetector进行了研究,并设法使该功能适用于电子邮件和电话号码,但我仍停留在地址上。我用来检测地址的代码如下: let types: NSTextCheckingType = [.Address] let detector =

我目前有一个地址检测处于活动状态的UITextView,它可以检测此字段中的任何地址,并将它们变成一个可单击的链接,打开以地址为焦点的Apple地图。我真的很喜欢这个功能,但我的用户更希望有一个按钮来点击,而不是内联链接。 考虑到这一点,我对NSDataDetector进行了研究,并设法使该功能适用于电子邮件和电话号码,但我仍停留在地址上。我用来检测地址的代码如下:

    let types: NSTextCheckingType = [.Address]
    let detector = try! NSDataDetector(types: types.rawValue)
    let matches = detector.matchesInString(input, options: [], range: NSMakeRange(0, input.characters.count))
    for match in matches {
        return NSURL(string: "\((input as NSString).substringWithRange(match.range))")
    }
但是NSURL无法创建,我相信语法一定是错误的,它适用于电话号码,如下所示:

    let types: NSTextCheckingType = [.PhoneNumber]
    let detector = try! NSDataDetector(types: types.rawValue)
    let matches = detector.matchesInString(input, options: [], range: NSMakeRange(0, input.characters.count))
    for match in matches {
        return NSURL(string: "telprompt://\((input as NSString).substringWithRange(match.range))")
    }
如果地址有效,则返回matches对象中地址的组成部分(街道、城市等)。我希望NSURL可以像电话号码一样与地址一起使用,但我可能错了,那么有没有其他方法可以使用探测器的结果并手动显示在苹果地图上

或者作为旁注,我是否可以隐藏UITextView并基于按钮触摸以编程方式触发链接触摸

可根据需要提供更多信息, 提前感谢您的帮助