关于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

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

融云会话界面导航上移-使用IQKeyboardManager的更多相关文章

  1. iOS开发融云即时通讯集成详细步骤

    1.融云即时通讯iOS SDK下载地址   http://rongcloud.cn/downloads  选择iOS   SDK下载 2.进行应用开发之前,需要先在融云开发者平台创建应用,如果您已经注 ...

  2. iOS:融云即时通讯快速集成

    一.介绍 即时通讯在众多社交软件.生活软件以及教育软件中已经是必备的功能了,在当前国内,即时通讯SDK做的比较不错的有那么几家,例如环信SDK.融云SDK...,这两家做的都很不错,各有千秋吧,要是真 ...

  3. apicloud+融云实现即时通讯

    请尊重作者的辛勤劳动!!! 使用apicloud开发已经快2个月了,起初的目的就是为了实现安卓和苹果的兼容,属于一个试验项目,究竟apicloud是否能够满足公司的要求?最 终看来还是不错的,使用ap ...

  4. iOS消息体系架构详解-融云即时通讯云

    iOS SDK 体系架构 本文档将详细介绍融云的 SDK 产品架构和消息体系,以便于您更深入的了解融云并更快速的开发自己的产品. 融云 SDK 系统架构 IMKit IMKit 的功能主要是封装各种界 ...

  5. 融云的Java端实现

    产品中要使用融云实现即时通讯,下面是实现步骤: 1 .注册appkey secret,这个是第一步: 2 .下载融云Java客户端 https://github.com/rongcloud/serve ...

  6. IM 融云 之 开发基础概念

    基础概念 - 开发篇 App Key / Secret App Key / Secret 相当于您的 App 在融云的账号和密码.是融云 SDK 连接服务器所必须的标识,每一个 App 对应一套 Ap ...

  7. web 直播&即时聊天------阿里云、融云(二)

    上一篇简要主要介绍了融云制作聊天室的基本方法,这次基本属于对上一篇的补充以及进阶...^_^... (ps:吐槽一下,加了三个融云的线下qq群,全部没人解决问题,也不知道建此群的意义,若是民间的话就当 ...

  8. 【融云分析】 IM 即时通讯之链路保活

    众所周知,IM 即时通讯是一项对即时性要求非常高的技术,而保障消息即时到达的首要条件就是链路存活.那么在复杂的网络环境和国内安卓手机被深度定制化的条件下,如何保障链路存活呢?本文详解了融云安卓端 SD ...

  9. 【融云分析】如何实现分布式场景下唯一 ID 生成?

    ◀背景▶ 对于一套分布式部署的 IM 系统,要求每条消息的 ID 要保证在集群中全局唯一且按生成时间有序排列.如何快速高效的生成消息数据的唯一 ID ,是影响系统吞吐量的关键因素.那么,融云是如何做到 ...

随机推荐

  1. 洛谷P2775 机器人路径规划问题

    传送门 题解 至今没看懂这深搜怎么写的…… //minamoto #include<iostream> #include<cstdio> #include<cstring ...

  2. 【SSO单点系列】(4):CAS4.0 SERVER登录后用户信息的返回

    接着上一篇,在上一篇中我们描述了怎么在CAS SERVER登录页上添加验证码,并进行登录.一旦CAS SERVER验证成功后,我们就会跳转到客户端中去.跳转到客户端去后,大家想一想,客户端总要获取用户 ...

  3. SDUT OJ 顺序表应用6:有序顺序表查询

    顺序表应用6:有序顺序表查询 Time Limit: 1000 ms Memory Limit: 4096 KiB Submit Statistic Discuss Problem Descripti ...

  4. 使用Lazy对构造进行重构后比较

    用于测试在是否使用Lazy 的情况下,服务器负载,及服务提供情况对比.     服务器环境:   在此机器上安装了1 Hyper-V ,分配走1G内存,同时在本地上安装 SQLServer ,   在 ...

  5. 2.2、Softmax Regression算法实践

    Softmax Regression算法实践 有了上篇博客的理论知识,我们可以利用实现好的函数,来构建Softmax Regression分类器,在训练分类器的过程中,我们使用多分类数据作为训练数据: ...

  6. Qt 学习之路 2(43):QStringListModel

    Qt 学习之路 2(43):QStringListModel 豆子 2013年2月13日 Qt 学习之路 2 38条评论 上一章我们已经了解到有关 list.table 和 tree 三个最常用的视图 ...

  7. prcharm 注册码

    JetBrains全系列在线激活中心 使用方法: 1. 点击Help,选择Register.打开注册页面. 2. 选择License server, 在License server address 中 ...

  8. anaconda 换源

    2019.4.24更新: 清华源停止维护了(见:https://mirrors.tuna.tsinghua.edu.cn/news/close-anaconda-service/).以下方法不再适用. ...

  9. C# 利用Powershell获取网络相关信息

    利用Get-NetAdapter获取信息 Get-NetAdapter 参考链接:https://docs.microsoft.com/en-us/powershell/module/netadapt ...

  10. for( in ) IE下兼容问题

    在JS 中 for in 常用于遍历对象的可枚举属性,包括原型链上的属性.然而for_in在IE < 9下可能会出现问题. for_in要出现问题必须满足两个条件:  1:IE < 9; ...