1

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

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

(我已经阅读了如何在 iPhone 上执行此操作,但相同的代码在 iPad 上不起作用。)

笔记用户界面

(键盘下方有 3.5 张照片,但如果您尝试向下滚动,表格视图会弹回该位置。)

4

1 回答 1

0

我的问题是由于在viewWillAppear. 此时,键盘通知会触发,但其中的坐标一旦转换为新视图就无效,因为视图实际上并没有出现。

所以不要这样做:

- (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上发布了一个测试项目: Keyboard Ducker

于 2012-09-27T01:48:16.610 回答