web-dev-qa-db-ja.com

Returnキーが押されたときにキーボードを非表示にする方法-Swift

リターンキーが押されたときにiOSキーボードを非表示にしようとすると、代わりに停止し、画像に表示されるエラーが表示されます。私が使用しているコードは次のとおりです。

@IBOutlet weak var scoreText: UITextField!

func textFieldShouldReturn(_ scoreText: UITextField) -> Bool {
    self.view.endEditing(true)
    return false
}

enter image description here

9
stevetheipad

問題は、そのメソッドを使用するためにtextFieldを委任しなかったことです。最初に、クラスにUITextFieldDelegateプロトコルを含める必要があります。

_class yourClass: UIViewController, UITextFieldDelegate { ... }
_

そしてviewDidLoad()メソッドで、これも追加します:

_scoreText.delegate = self
_

そして、これを変更する必要があります:

_func textFieldShouldReturn(_ scoreText: UITextField) -> Bool {
    self.view.endEditing(true)
    return false
}
_

これに:

_func textFieldShouldReturn(_ scoreText: UITextField) -> Bool {
    self.view.endEditing(true)
    return true
}
_

最終コード:

_class yourClass: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var scoreText: UITextField!

    override func viewDidLoad(){
        super.viewDidLoad()
        scoreText.delegate = self
    }

    func textFieldShouldReturn(_ scoreText: UITextField) -> Bool {
        self.view.endEditing()
        return true
    }
}
_

これが機能しない場合、問題はtextFieldShouldReturn()関数ではありません。コンセントの接続を確認してください。

30
Mr. Xcoder

これを試して

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

Swift 4または5で、次のように使用できます。

  1. プロジェクトを作成する
  2. uITextFieldを追加し、ViewControllerに接続します
  3. uITextFieldDelegateをViewControllerに実装します
  4. UITextFieldデリゲートを初期化します
  5. ViewControllerにtextFieldShouldReturnメソッドを追加します
  6. 完全なコードはこちら

    class ViewController: UIViewController,UITextFieldDelegate {
    
     //Connect to text field
     @IBOutlet weak var scoreText: UITextField!
    
     override func viewDidLoad() {
       super.viewDidLoad()
    
        //must initialize delegate
        scoreText.delegate = self
      }
    
     //add method
     func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        textField.resignFirstResponder()
        return true
     }  
    
    }
    
0
Enamul Haque