问题
处理表单的时候,一定会碰到的就是输入控件被键盘遮住的问题,如图:

左边是普通表单,中间是2B表单,右边是文艺表单.
分析
处理这种问题无非就是2个步骤:
- 键盘弹出时,缩小
UITableView的frame - 滚动
UITableView,让当前输入的控件可见
代码写出来就是这几步
- 捕获键盘事件
- 计算键盘高度并调整
UITableView的frame - 获取当前正在输入的控件
- 计算其在
UITableView中的位置,并滚动到其位置让其可见
那么如何一步一步的来实现这些步骤呢?
捕获键盘事件
1 | [[NSNotificationCenter defaultCenter] addObserver:self |
计算键盘高度并调整UITableView的frame
1 | - (void)actionKeyboardShow:(NSNotification *)notification |
获取当前正在输入的控件
这里得说一句,普通程序员一般是这样来获取的
1 | - (UIView *) getFirstResponder |
虽然没错,但是文艺程序员应该这样来获取
1 | static __weak id currentFirstResponder; |
同理,有时候我们需要让键盘消失,那么也有三种做法可以选择
1 | [someView resignFirstResponder]; |
如何选择呢? It’s up to U.
计算其在UITableView中的位置,并滚动到其位置让其可见
1 | - (void)actionKeyboardShow:(NSNotification *)notification |
