UIKeyboardFrameEndUserInfoKey Incorrect on navigation transition

Originator:calebmdavenport
Number:rdar://15054825 Date Originated:September 23, 2013
Status:Open Resolved:
Product:iOS SDK Product Version:iOS 7 GM
Classification: Reproducible:Always
 
Summary:
In iOS versions lower than 7.0, the value for UIKeyboardFrameEndUserInfoKey would report an accurate screen frame on navigation push and pop. The x value would be equal to the screen width for a pop and minus the screen width for a push. In iOS 7 the x value of the frame is always 0, making it difficult for animations to appear consistent with the system animation on such a transition.

In the results sections below, note that the value of UIKeyboardFrameEndUserInfoKey reports an offscreen-to-the-right frame, instead of an offscreen-to-the-bottom frame.

Steps to Reproduce:
1. Push a view controller onto a UINavigationController stack
2. Register for UIKeyboardWillShowNotification in that view controller
3. Make the keyboard appear by inserting a UITextField into the view controller's view and cause it to become first responder
4. Pop the view controller from the navigation stack

Expected Results:
(lldb) po notification
NSConcreteNotification 0xb446110 {name = UIKeyboardWillHideNotification; userInfo = {
    UIKeyboardAnimationCurveUserInfoKey = 0;
    UIKeyboardAnimationDurationUserInfoKey = "0.35";
    UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {320, 216}}";
    UIKeyboardCenterBeginUserInfoKey = "NSPoint: {160, 460}";
    UIKeyboardCenterEndUserInfoKey = "NSPoint: {160, 460}";
    UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 352}, {320, 216}}";
    UIKeyboardFrameChangedByUserInteraction = 0;
    UIKeyboardFrameEndUserInfoKey = "NSRect: {{320, 352}, {320, 216}}";
}}

Actual Results:
(lldb) po notification
NSConcreteNotification 0xc100ce0 {name = UIKeyboardWillHideNotification; userInfo = {
    UIKeyboardAnimationCurveUserInfoKey = 7;
    UIKeyboardAnimationDurationUserInfoKey = "0.25";
    UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {320, 216}}";
    UIKeyboardCenterBeginUserInfoKey = "NSPoint: {160, 460}";
    UIKeyboardCenterEndUserInfoKey = "NSPoint: {160, 676}";
    UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 352}, {320, 216}}";
    UIKeyboardFrameChangedByUserInteraction = 0;
    UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 568}, {320, 216}}";
}}

Version:
iOS 7 GM

Notes:


Configuration:


Attachments:

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!