質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1765閲覧

superクラスのメソッドをoverrideせずに上書きしている?

Blue0999

総合スコア148

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2016/03/25 10:15

編集2016/03/25 10:17

謎のメソッドtextFieldShouldReturn()について質問です。
Xcodeでいろいろ試しているとどうやらtextFieldShouldReturn()はUIViewControllerで定義されていて、キーボードでreturn(改行)を押したときに呼ばれるメソッドじゃないかと思っています。
しかしsuperクラスで定義されているメソッドを、サブクラスで独自の処理を与え書き直すには修飾子overrideが必要なはずですが書いてありません。このクラスで作ったメソッドなのかとも思ったのですが、キーボードでreturnを押すと実行するなんていう難しい処理を書いた覚えはありません。
またこのメソッドの最後にreturn trueと書いてありますがtrueをfalseに変更してもシュミレーターで実行した際、動作は変わりませんでした。このreturnはどういう意味でしょうか。
どうしてもわからないので知ってる方教えてください!

func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

textFieldShouldReturn()はプロトコルです。UIViewControllerでは定義されてませんが,returnを押したときに呼ばれるもの,という理解はあってます。しかし,メソッドではなくプロトコルと呼ばれるものです。若干乱暴ですが,メソッドは呼ばれてそれに応じた処理が実装されていないとエラーになりますが,プロトコルは実装されてなければ,単に無視されるだけ(が多い)です。

Objective-Cプログラミング言語を読むと良いでしょう。細かな構文は違いますが,概念はSwiftと同じです。

UITextFieldDelegate Protocol Referenceも合わせてどうぞ。

投稿2016/03/25 12:59

NCC1701

総合スコア1680

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Blue0999

2016/03/25 23:36

ご回答ありがとうございます! 教えて頂いたページをグーグルで和訳して一読させていただきました。 textFieldShouldReturn()メソッドはプロトコルUITextFieldDelegateに定義されたメソッドなのですね。実装が任意のメソッドをプロトコルに定義できるという事を知りませんでした。return trueについての記述はなかったように思えたのですが今のところ困っていないのでそれはまたの機会に質問させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問