2

私は現在、住所検出がアクティブな 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を非表示にして、ボタンのタッチに基づいてプログラムでリンクのタッチをトリガーできますか?

必要に応じてさらに情報を提供することができます。事前に助けてくれてありがとう。

4

0 に答える 0