私は現在、住所検出がアクティブな 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 マップに表示する別の方法はありますか?
または、補足として、UITextViewを非表示にして、ボタンのタッチに基づいてプログラムでリンクのタッチをトリガーできますか?
必要に応じてさらに情報を提供することができます。事前に助けてくれてありがとう。