在iOS APP的开发中,不能避免的要处理些键盘的相关显示效果,比如键盘遮挡了正在编辑的输入框,而设计又不可能变更的情况下,需要我们程序猿(媛)自己去处理视图随键盘一起滚动,让键盘不遮挡到正在编辑的输入框.但是这个处理自己写的话会相当的麻烦和耗时间,要写键盘的监听事件,并处理视图的frame或contentoffset,不可避免的代码量就上升了
而能方便我们解决这个问题的就是我今天想介绍的第三方IQKeyboardManager!
只要集成它,它能够自动处理我们大部分的键盘处理的需求比如上面说的问题,而不需要增加一行代码!!!
使用方法:
github地址: https://github.com/hackiftekhar/IQKeyboardManager.git
下载直接拖入工程run起来到点击输入框,即可看到效果
或者
cocoapods安装: pod 'IQKeyboardManager', '~> 4.0.11'
接下来说下这个第三方不足的地方(可以说是坑)
1.如何禁用
因为IQKeyboardManager放入项目里就自动生效了,所以会导致我们在某些有特殊要求的界面不想要这个效果就得禁用它,但是找了网上一些帖子,有些并没有效果,然后自己研究实践给大家知道下
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;//禁用键盘上的toolbar 也就是按钮
[IQKeyboardManager sharedManager].enable = NO;// 禁止键盘出现时的界面滚动
viewwillappear时调用 这个界面禁止IQKeyboardManager
viewdiddisappear时 可以把他们设为YES,再次打开IQKeyboardManager
2.键盘出现时界面的navigationBar会随着上移
这个bug也是困扰了我很久的一个问题,网上找了很多资料都是说把控制器的视图换成滚动视图的确是可以解决(在frame布局的情况下).
- (void)loadView
{
[super loadView];
self.view = [[UIScrollView alloc] initWithFrame:self.view.bounds];
}
但是我现在用的是Masonry的约束布局,Masonry和scroll的相性本来就不好,把view一替换布局就全乱了完全没办法看.只能要么禁用IQKeyboardManager,要么界面用frame布局,暂时没找到在Masonry的最好解决办法
有解决办法的大神也请多多指教!!!