2014-10-10 3 views
0

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

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

ответ

0

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

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