I have a project that contains a
The problem is I set
inputAccessoryView for the
UITextField, and this cause
UIKeyboardWillShowNotification being called again when new
UITextField is selected
This article Working With Keyboard on iOS explains this well
Additional changes take place when we connect an external keyboard to the iPad. In this particular case, the notification behavior depends on the inputAccessoryView property of the control which was the reason for displaying the keyboard.
If inputAccessoryView is not present or its height is equal to 0 points, no keyboard notifications are sent. My guess is that this is because in this case, no visual changes take place in application. Otherwise, all notifications behave as expected – which means they are being sent as in the majority of cases when the keyboard is displayed or hidden in a normal (not undocked or split) state.
UITextField is selected, the OS needs to compute the frame for the keyboard again, and the following notifications are posted
UIKeyboardWillChangeFrameNotification UIKeyboardWillShowNotification UIKeyboardDidChangeFrameNotification UIKeyboardDidShowNotification
The same applies for when the TextField loses its first responder status
Note that using the same View for
inputAccessoryView will cause
UIKeyboardWillShowNotification only called once