如何调整视图大小以避开iPad键盘?

如何调整视图大小以避开iPad键盘?,ipad,on-screen-keyboard,Ipad,On Screen Keyboard,我在模态表单中呈现一个视图。它可以工作,但键盘在横向上挡住了屏幕的下半部分,在纵向上挡住了屏幕的一小部分。我如何补偿iPad上的键盘 用户界面基本上是一个位于屏幕左侧3/4的大文本框,以及在tableview中沿右边缘的一条照片。我需要调整tableview的大小,以便用户可以滚动查看最后一个 我读过如何在iPhone上实现这一点,但同样的代码在iPad上不起作用 键盘下方有3.5张照片,但如果您尝试向下滚动,表格视图将反弹到此位置。我的问题是由于在视图中指定第一响应者而导致的。此时,键盘通知将

我在模态表单中呈现一个视图。它可以工作,但键盘在横向上挡住了屏幕的下半部分,在纵向上挡住了屏幕的一小部分。我如何补偿iPad上的键盘

用户界面基本上是一个位于屏幕左侧3/4的大文本框,以及在tableview中沿右边缘的一条照片。我需要调整tableview的大小,以便用户可以滚动查看最后一个

我读过如何在iPhone上实现这一点,但同样的代码在iPad上不起作用


键盘下方有3.5张照片,但如果您尝试向下滚动,表格视图将反弹到此位置。

我的问题是由于在视图中指定第一响应者而导致的。此时,键盘通知将触发,但其中的坐标在转换为新视图后无效,因为该视图尚未实际出现

因此,与其这样做,不如:

- (void)viewWillAppear: (BOOL)animated {
    [super viewWillAppear: animated];

    // register for keyboard events here

    [_field becomeFirstResponder];
}
- (void)viewWillAppear: (BOOL)animated {
    [super viewWillAppear: animated];

    // register for keyboard events here

    dispatch_async(dispatch_get_main_queue(), ^{
        [_field becomeFirstResponder];
    });
}
我现在这样做:

- (void)viewWillAppear: (BOOL)animated {
    [super viewWillAppear: animated];

    // register for keyboard events here

    [_field becomeFirstResponder];
}
- (void)viewWillAppear: (BOOL)animated {
    [super viewWillAppear: animated];

    // register for keyboard events here

    dispatch_async(dispatch_get_main_queue(), ^{
        [_field becomeFirstResponder];
    });
}
否则,问题很简单:找到键盘框架,将其转换为局部坐标,调整视图以将其隐藏

我向github发布了一个测试项目: