我正在使用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中完成它。
非常感谢任何帮助。
答案 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 {
注意_
后面的空格。