このレッスンではdelegate という機能を使って、キーボードの Return キーが押されたときにそれに対応してキーボードを消す方法を説明します。まずこちらのアプリの状態をご覧ください。現在この Satoshi という文字をここに入力して、ユーザの名前が入力された後にボタンを押したり画面をタッチしたりすると、Hello, Satoshi!!とこの名前がメッセージに埋め込まれるとというこういう状態になっていますがこのテキストフィールドに対して入力している最中にこの return キーを押しても、例えばこの Satoshi というのをSatoshi2 というふうに変更したとしてもこのメッセージ部分に何も反応がありません。今回はこの return キーが押されたときにどのように対応することができるのか、ということを説明したいと思います。テキストフィールドの中で何かが起こったということを察知するためには、実はこのテキストフィールドからtextFieldDelegate というのをもらってやる必要があります。その textFieldDelegate としてこの ViewController が機能するためには、ここの UIViewController と書いてあるところの後ろにUITextFieldDelegateというのをこのように入力しておく必要があります。 そしてこのようにTextFieldDelegate と入力したことによって、この ViewController はですねdelegate というものになることができます。Main.storyboard を開いていただきまして、この Document Outlineというのを表示するボタンがこの画面左下にあります。このボタンを押してやることでこの View Controller の階層を覗くことができるんですが、この中で View Controllerというものが 今delegate だというふうに宣言されましたので、ここにあるこのテキストフィールドこのテキストフィールドから、右クリックドラッグあるいは Ctrl キーを押しながらのドラッグを使うことでView Controller のところまで足を伸ばして、そしてこのテキストフィールドのdelegate はこの View Controller ですよとというふうに足を結びつけることができるようになります。このように結びつけるとですね、テキストフィールドの中で何かが起こるたびにこの ViewController の特別なメソッドが呼び出されるようになりますので、あとはここにその特別な何かが起きたときのことを書いてやればいいとということになります。 Return キーが押されたときには、textFieldShouldReturnというこのメソッドが呼ばれるようになっていますので、このようにtextFieldShouldReturn を選択して、Return キーを押してやるとこのキーボードのReturn キーが押されたときに対応することができるメソッドがですねここに用意されますので、ここで自分に対してボタンが押されたことにしますよと言ってこれをこのように書いてやりまして、そして名前のこの nameField ですね。こいつを FirstResponder ではなくしますよということで、resignFirstResponder をこうやって書いてやりまして、最後にここには Return 文を何か書かないといけないんですけど、Return false と書いておけば今回問題ありません。このように書いておいてください。このように書くことでちょっと今エラーが出ていますけれども、一度実行終了してビルドし直してやればこのエラー消えると思います。特に問題なくビルドができましたので、このまま実行してみたいと思います。そうするとこのテキストエディタがクリックされてそして何かが入力されました。 で、Return キーが押されました。というタイミングでこの delegate のメソッドが呼ばれますので、このようにボタンが押されたことになってメッセージがこのように更新されるということがわかります。もちろんこのソフトウェアのReturn キーだけではなくて、ハードウェアの Return キーにもちゃんと対応していますので、ハードウェアの Return キーをぽんと押してやっても、このようにボタンが押されたことになってメッセージの更新が行われます。このレッスンでは、delegate を使ってキーボードを隠す方法を説明しました。