phone 与模拟器上不同的 UITextField 行为
Different UITextField behavior on phone vs simulator
我有一个正在使用不可见的 UITextField 更新的 SKLabelNode。因此,当用户在键盘上键入内容时,标签会更改为该字符串。下面的代码是我正在使用的。它在 iOS 模拟器中运行完美,但是当我在 phone 上 运行 时,每次键入字符时 UITextField 都是空的,因此字符串永远不会变长。我错过了什么?
var inputTextField = UITextField(frame: CGRectMake(0, 0, 100, 30))
var inputTextLabel = SKLabelNode(fontNamed:"Thonburi")
override func didMoveToView(view: SKView) {
inputTextLabel.text = "";
inputTextLabel.fontSize = 25;
inputTextLabel.position = CGPoint(x:10, y:CGRectGetMidY(self.frame));
inputTextLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left
self.addChild(inputTextLabel)
inputTextField.delegate = self
inputTextField.hidden = true
inputTextField.becomeFirstResponder()
self.inputTextField.keyboardType = UIKeyboardType.ASCIICapable
self.view?.addSubview(inputTextField)
}
func textField (textField: UITextField, shouldChangeCharactersInRange range:NSRange, replacementString string: NSString){
var newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string)
inputTextLabel.text = newString
}
我明白了,textField 函数应该是 return 像这样的 bool
func textField (textField: UITextField, shouldChangeCharactersInRange range:NSRange, replacementString string: NSString) -> Bool {
var newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string)
inputTextLabel.text = newString
return true
}
我有一个正在使用不可见的 UITextField 更新的 SKLabelNode。因此,当用户在键盘上键入内容时,标签会更改为该字符串。下面的代码是我正在使用的。它在 iOS 模拟器中运行完美,但是当我在 phone 上 运行 时,每次键入字符时 UITextField 都是空的,因此字符串永远不会变长。我错过了什么?
var inputTextField = UITextField(frame: CGRectMake(0, 0, 100, 30))
var inputTextLabel = SKLabelNode(fontNamed:"Thonburi")
override func didMoveToView(view: SKView) {
inputTextLabel.text = "";
inputTextLabel.fontSize = 25;
inputTextLabel.position = CGPoint(x:10, y:CGRectGetMidY(self.frame));
inputTextLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Left
self.addChild(inputTextLabel)
inputTextField.delegate = self
inputTextField.hidden = true
inputTextField.becomeFirstResponder()
self.inputTextField.keyboardType = UIKeyboardType.ASCIICapable
self.view?.addSubview(inputTextField)
}
func textField (textField: UITextField, shouldChangeCharactersInRange range:NSRange, replacementString string: NSString){
var newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string)
inputTextLabel.text = newString
}
我明白了,textField 函数应该是 return 像这样的 bool
func textField (textField: UITextField, shouldChangeCharactersInRange range:NSRange, replacementString string: NSString) -> Bool {
var newString = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string)
inputTextLabel.text = newString
return true
}