Hi, I encountered a similar issue in my app: My app shows and hides an edit area (text field + other controls) when the keyboard hides and shows. The iPad floating and split keyboards presented a problem because as mentioned, they only send frame change events.
I track the use of the traditional iPad keyboard by watching UIKeyboardWillShowNotification and UIKeyboardWillHideNotification events, and for floating and split keyboards, this is my solution when I get a UIKeyboardWillChangeFrameNotification notification:
Code Block | // n is NSNotification * from UIKeyboardWillChangeFrameNotification |
| NSDictionary *keyboardInfo = [n userInfo]; |
| CGRect keyboardFrameEndRect = [[keyboardInfo valueForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; |
| NSUInteger animationCurveOption = [[keyboardInfo valueForKey:UIKeyboardAnimationCurveUserInfoKey] integerValue]; |
|
| if (CGRectEqualToRect(keyboardFrameEndRect, CGRectZero) || // Floating keyboard is HIDING or BEING DRAGGED by the user |
| keyboardFrameEndRect.origin.y >= self.view.frame.size.height) { // Split keyboard is moving off screen |
| |
| if (animationCurveOption != 0) { // When animation curve is zero, the keyboard is being hidden. (Otherwise, it's being moved) |
| // TODO: FLOATING OR SPLIT KEYBOARD IS HIDING |
| } |
| } else { |
| // TODO: FLOATING OR SPLIT KEYBOARD IS SHOWING |
| } |