Обнаружение и открытие почтового адреса в Swift(iOS) с помощью NSDataDetector
В настоящее время у меня активен UITextView с обнаружением адресов, который обнаруживает любые адреса в этом поле и превращает их в интерактивную ссылку, которая открывает Apple Maps с адресом в качестве фокуса. Мне действительно нравится эта функциональность, но мои пользователи предпочитают нажимать кнопку вместо встроенной ссылки. Имея это в виду, я исследовал 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))")
}
Если адрес действителен, он возвращает компоненты адреса (улица, город и т. Д.) В объекте совпадений. Я надеялся, что NSURL можно будет использовать с адресом точно так же, как телефонные номера, но я могу ошибаться, есть ли альтернативный способ использовать результаты с детектора и отображать их в Apple Maps вручную?
Или, как примечание, могу ли я скрыть UITextView и запустить касание ссылки программно на основе нажатия кнопки?
Любая дополнительная информация может быть предоставлена по мере необходимости, заранее спасибо за любую помощь.