使用IQKeyboardManager来处理项目中的文本框被遮挡的问题是一个很好的选择, 但是也因为这个三方框架自动做了太多的事情有时候会导致一些很奇怪的问题。最常见的就是当控制器带有导航栏的时候会导致导航栏上移。官方Demo中也有提供一些解决方法。最近在实现一个表单提交页的时候,在UITableViewCell中有UITextField,在使用IQKeyboardManager的过程中也发现导航栏有上移的情况。但是我看Demo中并不会出现这样的情况。后来发现,在布局UITableView的时候,是直接设置的frame为self.view.bounds,看起来并没有什么大问题,但是这样IQKeyboardManager在处理的时候会让整个View的frame都上移,导航栏也就跟着偏移了。正确的做法是让UITableView的frame从导航栏下面开始布局。像这样
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(kTopHeight);
make.bottom.left.right.mas_equalTo(0);
}];
}
这样,导航栏就不会被顶出屏幕了。
网友评论