現在UItextFieldに文字を入力して、それをUILabelに表示する様なアプリを作っていて、実現できています。
その中で、キーボードのreturnをタップして単純にキーボードを閉じたいのですが、できていません。
func textFieldShouldReturn(_ textField: UITextField) -> Bool { textField.resignFirstResponder() return true }
上記メソッドの他に、
viewDidLoad内にもtextField.delegate = selfがあり、
プロトコルにUITextFieldDelegateを追加していますが、閉じません。
調べていますが、原因がわからないため質問します。
よろしくお願いします。
//textFieldのあるモーダルビュー(ModalViewController)を追記しました。
参考にしたドキュメントです
import UIKit class ModalViewController: UIViewController, UITextFieldDelegate { var changeButton = UIButton() var textField = UITextField() override func viewDidLoad() { super.viewDidLoad() set() } func set() { view.backgroundColor = .gray let cancelButton = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 30)) cancelButton.center = CGPoint(x: view.center.x - 100, y: view.center.y) cancelButton.setTitle("キャンセル", for: .normal) cancelButton.setTitleColor(UIColor.black, for: .normal) cancelButton.addTarget(self, action: #selector(pushDismiss(sender:)), for: .touchUpInside) view.addSubview(cancelButton) // changeButton = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 30)) changeButton.center = CGPoint(x: view.center.x + 100, y: view.center.y) changeButton.setTitle("変更", for: .normal) changeButton.setTitleColor(UIColor.black, for: .normal) changeButton.addTarget(self, action: #selector(pushChange(sender:)), for: .touchUpInside) changeButton.isEnabled = false view.addSubview(changeButton) textField.delegate = self textField.text = "" textField = UITextField(frame: CGRect(x: 0, y: 0, width: view.bounds.width - 20, height: 30)) textField.center = CGPoint(x: view.center.x, y: view.center.y + 50) textField.placeholder = "入力してね" textField.backgroundColor = .white view.addSubview(textField) let center = NotificationCenter.default center.addObserver(・省略してます) } @objc func textFieldDidChange(notification: NSNotification) { if textField.text == "" { changeButton.isEnabled = false } else { changeButton.isEnabled = true } } func textFieldShouldReturn(_ textField: UITextField) -> Bool { DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { self.view.resignFirstResponder() } return true } //変更 @objc func pushChange(sender:UIButton) { textField.resignFirstResponder() let originVc = presentingViewController as! HomeViewController originVc.textFromModal = textField.text! self.dismiss(animated: true, completion: nil) } //キャンセル @objc func pushDismiss(sender:UIButton) { self.dismiss(animated: true, completion: nil) } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/23 02:07
2018/06/23 02:13
退会済みユーザー
2018/06/23 02:31
2018/06/23 02:46
退会済みユーザー
2018/06/23 03:19
2018/06/23 03:46 編集
退会済みユーザー
2018/06/23 04:00 編集
2018/06/23 04:04
退会済みユーザー
2018/06/23 04:09