我在模态表单中呈现视图。它可以工作,但是键盘在横向时会挡住屏幕的下半部分(在纵向时会挡住屏幕的一小部分)。如何补偿 iPad 上的键盘?
UI 基本上是一个位于屏幕左侧 3/4 处的大文本框,以及在 tableview 中沿右边缘的一条照片。我需要调整表格视图的大小,以便用户可以滚动查看最后一个。
(我已经阅读了如何在 iPhone 上执行此操作,但相同的代码在 iPad 上不起作用。)
(键盘下方有 3.5 张照片,但如果您尝试向下滚动,表格视图会弹回该位置。)
我在模态表单中呈现视图。它可以工作,但是键盘在横向时会挡住屏幕的下半部分(在纵向时会挡住屏幕的一小部分)。如何补偿 iPad 上的键盘?
UI 基本上是一个位于屏幕左侧 3/4 处的大文本框,以及在 tableview 中沿右边缘的一条照片。我需要调整表格视图的大小,以便用户可以滚动查看最后一个。
(我已经阅读了如何在 iPhone 上执行此操作,但相同的代码在 iPad 上不起作用。)
(键盘下方有 3.5 张照片,但如果您尝试向下滚动,表格视图会弹回该位置。)
我的问题是由于在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