酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

SwiftでUITextFieldの文字入力を検出する

iOSでは文字入力用のコンポーネントとしてUITextFieldを利用します。文字入力中……1文字入力ごとにバリデーションしたい時があります。たとえば、

  • ログイン画面でユーザーIDとパスワード欄が両方入力された場合にログインボタンを有効にする
  • ユーザー登録中にメールアドレスのフォーマットが正しいのか検査してSubmitボタンを有効にする
  • 検索欄で検索単語のサジェストをおこないたい

などです。

NSNotificationCenterを使って、UITextFieldTextDidChangeNotificationの通知を受け取ることで文字入力したことを検出することができます。

class LoginViewController : UITableViewController {

    @IBOutlet weak var passwordTextField: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        NSNotificationCenter.defaultCenter().addObserver(self, selector: "textDidChange:", name: UITextFieldTextDidChangeNotification, object: self.passwordTextField)
    }

    func textDidChange(notification: NSNotification) {
        // パスワードが正しく入力されたか調べる
    }
}

上記の場合、文字入力が完了する度に textDidChange が呼ばれます。

関連記事