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

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

方法一:

写在前面

虽然修改后能解决导航栏被挤出去的问题,可是就目前来看是有反作用的,写这篇文章就是想你们来一块儿讨论,毕竟键盘处理仍是比较头疼的。app

如何修改

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

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

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

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

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

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

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,解决问题,固然,这不是最好的解决方案。input

方法二:

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

以上都是参考别人的,记录一下,供本身之后研究使用!string

相关文章
相关标签/搜索