UIScrollViewKeyboardDismissModeInteractive用键盘更改tableview高度

Awe*_*e-o 4 objective-c uitableview uikit uikeyboard ios

UIViewController我设定的 范围内self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive.

这很棒,因为用户可以从桌面视图中向下拖动键盘.

但是,当拖动键盘时,tableview会保持当前的高度.这看起来很奇怪,因为它在键盘和scrollview之间留下了空白空间.

如何持续跟踪键盘的框架,以便在用户拖动键盘时调整tableview的大小?我尝试过使用UIKeyboardWillChangeFrameNotification但似乎只有在用户完成拖动后才会调用.

Dar*_*ren 7

您的表格视图不应更改其高度以适应键盘.

相反,键盘应该显示在表视图的上方,您应该调整表视图上的contentInsetscrollIndicatorInsets属性,以便键盘不会遮盖下表内容.键盘出现或解除时,您需要更新滚动插入.

键盘以交互方式解除时,您不必执行任何特殊操作,因为当键盘移出视图时,表格内容应该已向下滚动.


Awe*_*e-o 5

我希望这不是一个可以接受的答案,但是对于那些在那里的人来说,也遇到了麻烦,这对我有用。

  1. 创建UIView的自定义子类。

  2. 在子类的willMoveToSuperview:方法中,将KVO观察者添加到centeriOS 8和frame更低版本的iOS上的超级视图中(请记住要删除旧的观察者,您可能希望使用实例变量进行跟踪)。

  3. 在视图控制器中,通过inputAccessoryView类重写将0.0高度输入的附件视图添加到视图控制器。UIView为此,请使用自定义子类。

  4. 返回子类,在中observeValueForKeyPath:...,捕获frame视图的父视图的,这应该是的框架UIKeyboard

  5. NSNotificationCenter然后使用或其他方法将其传递frame回视图控制器进行处理。

这是一个非常痛苦的过程,并且不能保证可以在将来的iOS版本中使用。自从我刚构建此工具之后,可能会出现大量边缘工具,但这是一个好的开始。如果有人有更好的主意,我会很乐意将您的答案标记为正确。