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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

Q&A

解決済

2回答

934閲覧

UITextFieldのIBActionで設定したメソッドが呼ばれない

mm--_--mm

総合スコア113

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

0グッド

0クリップ

投稿2018/12/13 11:23

いつもお世話になっております。

現在swiftを勉強中の者です。Storyboard上で作成したUITextFieldで編集後にキーボードを閉じる処理を作成しているのですが、編集後にキーボードの完了ボタンを押しても@IBActionで作成したメソッドが呼ばれません...

Delegateはstoryboardで設定しています。

また、@IBActionで作成したメソッドではなく、コードで記述したメソッドは呼ばれてキーボードを閉じることができます。

この違いがわからないのでわかる方いらっしゃれば教えていただけると幸いです。
よろしくお願いいたします。

swift

1import UIKit 2 3class DetailViewController: UIViewController,UITextFieldDelegate{ 4 5 6 @IBOutlet weak var TitleField: UITextField! 7 8 override func viewDidLoad() { 9 super.viewDidLoad() 10 // Do any additional setup after loading the view. 11 //TitleField.delegate = self 12 } 13 14 15 //このメソッドが呼ばれません。(ログすら表示されない) 16 @IBAction func Edit_TitleField(_ sender: UITextField) { 17 print("call Edit_TitleField") 18 TitleField.resignFirstResponder() 19 } 20 21 //このメソッドのコメントアウトを外すと呼ばれます。 22// func textFieldShouldReturn(_ TitleField: UITextField) -> Bool{ 23// print("call textFieldShouldReturn") 24// TitleField.resignFirstResponder() 25// return true 26// } 27 28 29 /* 30 // MARK: - Navigation 31 32 // In a storyboard-based application, you will often want to do a little preparation before navigation 33 override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 34 // Get the new view controller using segue.destination. 35 // Pass the selected object to the new view controller. 36 } 37 */ 38 39} 40 41 42 43 44

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

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

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

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

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

guest

回答2

0

ベストアンサー

Editing Did Endは、UITextFieldからフォーカスが外れてキーボードが閉じられた時に呼ばれるメソッドです。改行ボタンを押しただけではフォーカスが外れないので、キーボードも閉じられず、Editing Did Endは呼ばれません。

コメント化されているtextFieldShouldReturnのdelegateメソッドでresignFirstResponder()を実行すれば、改行ボタンを押した時にフォーカスが外れるので、その結果、キーボードが閉じて Editing Did Endが呼ばれます。

delegateを使わずに、@IBActionだけで改行キーが押された時の処理をしたい場合はEditing Did Endではなく、Did End On Exitを接続する必要があります。これを接続すれば自動的にキーボードも閉じられます。

投稿2018/12/14 03:00

TakeOne

総合スコア6299

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

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

mm--_--mm

2018/12/14 04:35

ご回答いただきありがとうございます。 なるほど...そういう事なのですね。勉強になります...! 教えていただいた通りに修正したら無事に動きました! ありがとうございました!
guest

0

@IBActionは、UITextFieldのどのControlEventに関連付けたんですか?

Did End On Exit とかですか?

投稿2018/12/14 00:43

ha1f

総合スコア83

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

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

mm--_--mm

2018/12/14 00:45

ご回答いただきありがとうございます。 関連づけたのはEdting Did Endです。
ha1f

2018/12/14 00:49

複数に通知できないこと多いので、一旦delegateを外してみてください!
mm--_--mm

2018/12/14 01:08

外してみましが呼ばれませんでした....
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問