質問: textField.text textField.resignFirstResponder() // キーボードを閉じる return true } } ``` デリゲートについて、少々混乱してしまいました為、どなたか教えて頂ければ幸いです。 よろしくお願いします。
回答: textFieldはインスタンス化されています。 @IBOutletがついているので、storyboardに定義されたtextFieldと接続されていて、UIKitが読み込んでインスタンス化したあとで、viewDidLoadが呼ばれます。 selfがUITextFieldDelegateプロトコルに準拠しているので、delegateにselfを割り当てる事ができています。これによって、textFieldはselfであるところのViewControllerに定義された、UITextFieldDelegateプロトコルにあるメソッドを呼び出してくれるようになります。 また、UITextFieldDelegateプロトコルには必須のメソッドがなく、どのメソッドもoptional func ...という定義になっているので、利用側が呼んで欲しいメソッドだけを定義すればよいようになっています。 textFieldShouldReturnは、returnキーの振る舞いを変更できるメソッドなので、returnキーの挙動を変えたいから実装しています。コメントには必須と書いてありますが、optionalなので必須ではありません。 なお、プロトコル=メソッドではありません。プロトコルは、メソッドやプロパティの集合を型として定義したようなもので、メソッドはそこに含まれます。