如何在Sprite套件中的返回键上隐藏键盘?

时间:2019-09-07 15:29:48

标签: swift sprite-kit keyboard uitextfield

我正在使用UITextField为用户输入他的名字。这就是我将UITextField添加到游戏中的方式。

let firstPlayer:UITextField = UITextField()
firstPlayer.frame = CGRect(origin: CGPoint(x: (self.scene?.size.width)! * 0.21, y: (self.scene?.size.height)! * 0.2), size: CGSize(width: 200, height: 30))
firstPlayer.placeholder = "First Player Name"
firstPlayer.backgroundColor = UIColor.lightGray
firstPlayer.autocorrectionType = UITextAutocorrectionType.no
firstPlayer.keyboardType = UIKeyboardType.default
firstPlayer.keyboardAppearance = UIKeyboardAppearance.default
firstPlayer.delegate = self as? UITextFieldDelegate
firstPlayer.isHidden = true
view.addSubview(firstPlayer)

后来我在需要它之前取消隐藏文本字段。当我在模拟器中按文本字段时,键盘弹出。但是当我按下Return键时,什么也没发生。

我在其中搜索了sprite kit,但发现了有关uikit的所有内容。我尝试添加

    func textFieldShouldReturn(_textField: UITextField) -> Bool {
      self.view.endEditing(true);   // or resignFirstResponder
      return false;
    }

到GameViewController或在其中的viewDidLoad或willLayoutSubviews中,但没有任何效果。 我不明白如何在Sprite Kit中完成它。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

该行:

firstPlayer.delegate = self as? UITextFieldDelegate

应该是:

firstPlayer.delegate = self

您添加了as? UITextFieldDelegate的事实可能意味着您忘记了表明您的班级符合UITextFieldDelegate

通过以下方式更新您的类声明:

class MyViewController: UIViewController {

类似于:

class MyViewController: UIViewController, UITextFieldDelegate {

只需将, UITextFieldDelegate添加到当前声明中即可。

您也有错字:

func textFieldShouldReturn(_textField: UITextField) -> Bool {

必须是:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

注意_后面的空格。