Swift 如何在精灵套件中隐藏返回键上的键盘?

Swift 如何在精灵套件中隐藏返回键上的键盘?,swift,sprite-kit,keyboard,uitextfield,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))

我正在使用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)
后来,我在需要文本字段之前将其取消隐藏。当我在模拟器中按textfield时,键盘弹出。但当我按下Return键时,什么也没发生

我搜索了这个精灵套件,但找到了关于uikit的所有信息。我试着加上

    func textFieldShouldReturn(_textField: UITextField) -> Bool {
      self.view.endEditing(true);   // or resignFirstResponder
      return false;
    }
到GameViewController或其viewDidLoad或WillLayoutSubview,但没有任何效果。 我不明白在雪碧套装里是怎么做的

非常感谢您的帮助。

热线:

firstPlayer.delegate = self as? UITextFieldDelegate
应该是:

firstPlayer.delegate = self
您添加了as的事实?UITextFieldDelegate可能意味着您忘记指出您的类符合UITextFieldDelegate

从以下内容更新您的类声明:

class MyViewController: UIViewController {
class MyViewController: UIViewController, UITextFieldDelegate {
例如:

class MyViewController: UIViewController {
class MyViewController: UIViewController, UITextFieldDelegate {
只需将UITextFieldDelegate添加到当前声明中即可

您还有一个打字错误:

func textFieldShouldReturn(_textField: UITextField) -> Bool {
这需要:

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

注意.

文本字段后面的空格,即使被调用也应该返回吗?@rmaddy是的,这就是我不明白如何在sprite kit中调用它我们不能使用节点触摸或类似的东西我想你没有回答我的问题。如果将断点放在textFieldShouldReturn内,然后点击返回键,textFieldShouldReturn是否在断点处停止?是或否?@rmaddy否它不打印任何内容所以textFieldShouldReturn是在sprite kit中禁用键盘的方法?以前当我尝试将委托设置为self时,它会给我这个错误,无法将“HomeScene”类型的值指定给“UITextFieldDelegate”类型。是的,这是我答案中的第二个更改所解决的问题。阅读我的全部答案,并进行所有三个更改。但是在向类添加委托后,现在它不会给我那个错误,但它仍然不会隐藏键盘。您是否也修复了我在答案中指出的第三个错误?还要确保textFieldShouldReturn是类的顶级方法,而不是在任何其他方法中。