美文网首页
UITableView中放输入框造成的键盘遮挡问题

UITableView中放输入框造成的键盘遮挡问题

作者: 婉卿容若 | 来源:发表于2016-08-19 11:14 被阅读357次
    前提



    作为一个接盘侠,避免不了遇见各种坑。
    虽然我入职的时候做这个项目的小伙伴还在,当时他遇见这个问题的时候也问过我怎么解决,但当时没认真看他的实现方式就一直没能把问题解决,所以一个不怎么紧要的问题就遗留在这里.

    问题



    问题: 在 UITableViewCell 中放入输入框造成的键盘弹起问题.
    1.首先,这里我们并没有对键盘做任何处理,但是无论键盘有没有遮到输入框, tableView都会向上弹起,然后回落.给用户一种跳跃感,很糟糕.如果这样也就罢了.
    2.但是当一个输入框处于编辑状态,我们点击下一个输入框时(这里上次的回落并不是刚好落在键盘上,输入框与键盘会有或大或小的空间), tableView 还是会往上弹起,咯,然后就不下来了......
    3.然后我尝试给其添加了一个键盘处理(用的第三方库IQKeyboardManager).这样一编辑输入框,输入框就直接弹不见了(无论输入框会不会被遮挡)

    解决问题契机



    昨晚这个模块有个新需求.....讨厌改需求.
    然后测试时候我点击输入框,它弹来弹去我特么窝火
    所以就着手改...

    重点



    我特么发现它控制器继承的是 UITableViewController 而不是 UIViewController(抱歉,这个项目竟然没有 baseViewController...所有的共性需求在每个控制器里面处理呵呵呵呵)

    问题原因



    ViewController如果继承于UITableViewController,那么系统会自动处理键盘遮挡的问题
    因为我个人没直接用过UITableViewController(我都是在 controller 上面添加 tableView...毕竟快捷键代码块就出来了)
    结合我们没做任何处理就会出现键盘弹起,我大概锁定了问题应该就出现在这里了.

    解决



    我接手项目后发现了很多键盘遮挡的问题都没有优化,我就直接添加了IQKeyboardManager分别对出现问题的地方做了处理(这里我没有全局开启IQKeyboard,只在需要处理的 controller 中开启,全局开启没准哪天就会出现莫名其妙的问题,还特么找不到!别问我为什么知道,我之前一个项目被这个问题坑了两周)
    基于上面所做的工作,我直接把出现问题的 controller 改为继承 UIViewConroller,并添加了 TableView.
    之后问题就迎刃而解.

    补充

    IQKeyboardManager是 OC 的库,但由于目前 swift 中我还没找到更好的替代库(IQKeyboard有个 swift 的分支可以供 swift 项目使用,但是我使用时发现有时候项目会莫名其妙的崩溃,断点处理发现是IQKeyboard的问题,让我很闹心.由于IQKeyboard本身代码逻辑很难理解(可以参考 github 中库作者给的关系图....反正我是没看懂),所以我果断把项目换成了 oc 版的了)
    PS: 主要是太菜,还不能自己写库><

    相关文章

      网友评论

          本文标题:UITableView中放输入框造成的键盘遮挡问题

          本文链接:https://www.haomeiwen.com/subject/zbrbsttx.html