Почему textInput.keyboardType равен нулю в textDidChange?

Я разрабатываю пользовательскую клавиатуру в Swift, и я хотел бы знать, когда изменяется тип клавиатуры (например, на числовой или десятичный тип клавиатуры). Я считаю, что это должно быть сделано либо в textDidChange, либо в textWillChange. Этот метод получает UITextInput со свойством keyboardType. Но когда этот метод вызывается, это свойство всегда имеет значение nil, потому что оно никогда не запускает следующий код, даже после того, как я ввел другой тип ввода (число).

override func textDidChange(textInput: UITextInput) {
    if let inputType = textInput.keyboardType {
        //never gets here
        deleteKeyboardButton.backgroundColor = UIColor.yellowColor()
    }
}

person Jordan H    schedule 10.10.2014    source источник


Ответы (1)


Я узнал, что вы должны получить UITextDocumentProxy и использовать его свойство keyboardType, а не свойство textInput.

var proxy = self.textDocumentProxy as UITextDocumentProxy
if proxy.keyboardType == UIKeyboardType.EmailAddress {
    //add code here to display email input keyboard
}
person Jordan H    schedule 10.10.2014