融云会话界面导航上移-使用IQKeyboardManager

关于IQKeyBoardManager挤出导航栏的解决方案

方法一:

写在前面

虽然修改后能解决导航栏被挤出去的问题,但是就目前来看是有副作用的,写这篇文章就是想大家来一起讨论,毕竟键盘处理还是比较头疼的。

如何修改

其实我也就注释了一段代码

文件位置:IQKeyManager>Categorise>IQUIView+Hierarchy.m

注释了框出来的代码,前面也说了,这样做虽然能解决问题但是是有副作用的

目前已经发现的修改后的bug

1.当push后立马给输入框获取焦点的时候,收起键盘后,self.view会向上偏移64个单位,也就是导航栏的高度。

原理是如果不注释这段代码,那么该方法返回的是导航栏控制器,IQKeyBoard会将导航栏控制器的view一起偏移,注释掉后返回的就是viewController而不是NavigationViewController。

eg:
 -(void)viewDidLoad{ [super viewDidLoad]; self.title = @"键盘处理"; _inputTV = [[UITextView alloc] init]; [self.view addSubview:_inputTV]; [_inputTV mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.view); make.top.equalTo(self.view).offset(20); make.height.equalTo(@40); }]; // 如果在view初始化玩后就让其成为第一响应,在键盘收起时,self.view就会向上偏移 [_inputTV becomeFirstResponder]; }
尝试

我只是猜想,因为IQKeyBoard是通过注册各种通知,TextView 、UITextField 还有键盘的通知,是不是在viewdidload里 becomeFirstResponder时,通知发送顺序的影响加上我注释了那段代码(因为不注释是没有问题的)。
所以,我改在viewDidAppear里 becomeFirstResponder,解决问题,当然,这不是最好的解决方案。

方法二:

IOS8之后UINavigationController新增的键盘弹出时导航栏自动隐藏的特性导致的。我的解决方案是设置self.navigationController?.hidesBarsWhenKeyboardAppears = true
self.navigationController?.hidesBarsOnTap = true 这两个属性 具体的可以测一测

方法三:

把界面所有的東西裝進 scroollview就可以

方法四:

[IQkeyBoardxxxx sharedXXXX] 拿到manager enable = NO , 或者Toolxx = NO 我记得在Apper 的disappear里面写就行

iOS小问题——关于使用IQKeyBoardManager第三方的坑

http://blog.csdn.net/sinat_24363257/article/details/47834695

以上都是参考别人的,记录一下,供自己以后研究使用!

posted @ 2018-03-21 19:15  姜晓延  阅读(447)  评论(0编辑  收藏  举报