zoukankan      html  css  js  c++  java
  • 融云会话界面导航上移-使用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

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

  • 相关阅读:
    [背包]JZOJ 3232 【佛山市选2013】排列
    内核空间、用户空间、虚拟地址
    进程与线程的概念
    Python中字符串颜色
    socket编程
    模块与包
    常用模块
    面向对象进阶
    面向对象编程
    函数式编程
  • 原文地址:https://www.cnblogs.com/jiang-xiao-yan/p/8619027.html
Copyright © 2011-2022 走看看