2015-04-04 3 views
0

У меня есть SKLabelNode, который я обновляю, используя невидимый UITextField. Поэтому, когда пользователь набирает что-то на клавиатуре, метка меняется на эту строку. Ниже приведен код, который я использую. Он отлично работает в iOS-симуляторе, однако, когда я запускаю его на своем телефоне, UITextField пуст при каждом вводе символа, поэтому строка никогда не увеличивается. Что мне не хватает?Различные поведения 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 
} 

ответ

0

Я понял это, функция TextField должна возвращать логическое значение, как так

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 
} 
Смежные вопросы