调整iOS硬件键盘的视图框

时间:2015-01-14 20:43:44

标签: ios objective-c keyboard

我按照此处的说明使用iOS键盘调整视图。 https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

这不适用于硬件键盘。当文本视图处于活动状态时,未显示iOS键盘,但示例代码仍返回键盘的完整高度。在我的情况下,只是输入附件视图显示在屏幕上。

如何检测此情况并仅针对输入附件视图调整视图?

2 个答案:

答案 0 :(得分:0)

您可以将键盘的框架与当前窗口相交,如我在此处的答案https://stackoverflow.com/a/36553555/1049134

答案 1 :(得分:0)

遇到了同样的问题。 看起来iOS键盘已完全实例化,并且在连接硬件键盘时刚刚移出视图部分。因此键盘的大小是正确的。它没有完全显示出来。

在检查通知后,我通过自己计算可见键盘高度解决了这个问题。 在我的例子中,我正在听UIKeyboardWillShowNotification,UIKeyboardWillChangeFrameNotification和UIKeyboardWillHideNotification。

-(void)keyboardMessage:(NSNotification*)notification {
        NSDictionary *userInfo = notification.userInfo;
        CGFloat duration = [userInfo[@"UIKeyboardAnimationDurationUserInfoKey"] floatValue];
        NSValue *value = userInfo[@"UIKeyboardFrameEndUserInfoKey"];
        CGRect frame = [value CGRectValue];
        [UIView animateWithDuration:duration animations:^{
            self.lowerContraint.constant = self.view.frame.size.height - frame.origin.y;;
            [self.view needsUpdateConstraints];
            [self.view layoutIfNeeded];
        }];
    }