質問: 謎のメソッドtextFieldShouldReturn()について質問です。 Xcodeでいろいろ試しているとどうやらtextFieldShouldReturn()はUIViewControllerで定義されていて、キーボードでreturn(改行)を押したときに呼ばれるメソッドじゃないかと思っています。 しかしsuperクラスで定義されているメソッドを、サブクラスで独自の処理を与え書き直すには修飾子overrideが必要なはずですが書いてありません。このクラスで作ったメソッドなのかとも思ったのですが、キーボードでreturnを押すと実行するなんていう難しい処理を書いた覚えはありません。 またこのメソッドの最後にreturn trueと書いてありますがtrueをfalseに変更してもシュミレーターで実行した際、動作は変わりませんでした。このreturnはどういう意味でしょうか。 どうしてもわからないので知ってる方教えてください! func textFieldShouldReturn(textField: UITextField) -> Bool { textField.resignFirstResponder() return true }
回答: `textFieldShouldReturn()`はプロトコルです。UIViewControllerでは定義されてませんが,returnを押したときに呼ばれるもの,という理解はあってます。しかし,メソッドではなくプロトコルと呼ばれるものです。若干乱暴ですが,メソッドは呼ばれてそれに応じた処理が実装されていないとエラーになりますが,プロトコルは実装されてなければ,単に無視されるだけ(が多い)です。 Objective-Cプログラミング言語を読むと良いでしょう。細かな構文は違いますが,概念はSwiftと同じです。 UITextFieldDelegate Protocol Referenceも合わせてどうぞ。