8

I'm currently creating an iOS 8 custom keyboard extension, and I'm looking for a way to determine when the users switch to another input, in order to change my layout.

For example, when a users selects a UITextField with type UIKeyboardTypeEmailAddress I intend to present a custom keyboard, and when the user selects another UITextField with type UIKeyboardTypeDecimalPad, I want to notice it, and update my keyboard's layout. How does one get notified when the keyboard type changes in order to update the keyboard layout?

Jordan H
  • 52,571
  • 37
  • 201
  • 351
Drico
  • 1,284
  • 15
  • 33

1 Answers1

9

You can detect changes to the keyboard type in textDidChange. You need to get the UITextDocumentProxy then check the proxy's keyboardType. If it's a keyboard type you want to support, you can then present the appropriate UI. For example, this is how you would detect when the email keyboard should be displayed:

override func textDidChange(textInput: UITextInput) {
    // Called when the document context is changed - theme or keyboard type changes

    var proxy = self.textDocumentProxy as UITextDocumentProxy
    if proxy.keyboardType == UIKeyboardType.EmailAddress {
        //add code here to display email input keyboard
    }
}
Jordan H
  • 52,571
  • 37
  • 201
  • 351