iOS8 UIKeyboardWillShowNotification第三方键盘高度

7

当键盘出现时,我有一个需要进行位置调整的UI。

以下代码用于检测键盘何时出现:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillShow:)
                                             name:UIKeyboardWillShowNotification
                                           object:nil];

注意:我已经尝试过UIKeyboardWillShowNotification和UIKeyboardDidShowNotification两种方式。
- (void)keyboardWillShow:(NSNotification *)n {
    if (isKeyboardShowing)
    return;

NSDictionary* userInfo = [n userInfo];

// get the size of the keyboard
CGSize keyboardSize = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;


// Animate keyboard shift
[self.view layoutIfNeeded];

[UIView animateWithDuration:0.2f animations:^{
    // some animation here
} completion:^(BOOL finished) {
    if (finished)
        isKeyboardShowing = YES;
}];

对于自定义键盘,键盘大小返回{320, 0}。现在,由于键盘可以具有不同的高度,因此当键盘呈现时,我不能使用静态值来更改UI。

这是iOS8的问题吗?还有其他方法可以动态获取键盘高度吗?

编辑:这是userInfo字典:

{name = UIKeyboardDidShowNotification; userInfo = {
    UIKeyboardAnimationCurveUserInfoKey = 7;
    UIKeyboardAnimationDurationUserInfoKey = "0.25";
    UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {320, 0}}";
    UIKeyboardCenterBeginUserInfoKey = "NSPoint: {160, 568}";
    UIKeyboardCenterEndUserInfoKey = "NSPoint: {160, 568}";
    UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 568}, {320, 0}}";
    UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 568}, {320, 0}}";
}}

感谢您的提前帮助。
1个回答

11

使用

CGSize keyboardSize = [[userInfo objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;

获取键盘的实际尺寸


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接