[iOS 10] UITextContentType を使って住所などの入力を補完する

2016.10.14

UITextContentType

UITextContentType は iOS 10 から追加された、入力内容を補完する目的で使う型です。UITextInputTraits プロトコルの textContentType プロパティにセットすることができるため、UITextInputTraits に準拠している UITextField と UITextView に設定することができます。

UITextContentType を設定すると、他のアプリなどで最近使用された情報が、入力候補 (QuickType) として表示されるようになります。Proactive Suggestions と呼ばれているものです。

本記事では、住所の入力補完を試してみました。

実装する

試すと言っても非常に簡単で、対象となる UITextField または UITextView の textContentType プロパティにセットするだけです。まずは適当な Scene (View Controller) を Storyboard に用意し、UITextField を配置します。そして ViewController クラスに textField というプロパティでアウトレット接続しておきます。

ui-text-content-type-01

あとは viewDidLoad メソッドなどのタイミングで、textContentType プロパティに UITextContentType をセットします。

ViewController.swift

import UIKit

class ViewController: UIViewController, NSUserActivityDelegate {

    @IBOutlet weak var textField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        textField.textContentType = UITextContentType.fullStreetAddress
    }

}

ここでは fullStreetAddress をセットしました。これで住所が入力できます。それ以外にも都市名だけ入力する addressCity などもあります。

実行する

アプリをインストール (デバッグ) したら、まずマップで適当な場所を表示します。

ui-text-content-type-02

次にアプリを開いて文字を入力しようとすると、先ほど表示した場所が候補として表れます。

ui-text-content-type-03

選択すると、実際に入力されます。

ui-text-content-type-04

まとめ

アプリに入力フォームなどを取り入れている場合、設定しておくとユーザーに優しいちょっとしたおもてなしになります。ぜひ取り入れていきましょう。

実は住所以外にも、クレジットカード番号の creditCardNumber や、人物名の name などが定義されています。まだ試せていないので、こちらも引き続き調査したいと思います。

参考