做了三年开发 到现在才完美解决了弹键盘的问题

来源:互联网 发布:英国厨师知乎 编辑:程序博客网 时间:2024/05/09 11:35

   前两年写textField弹键盘时总是把当前页面变成scrollView,然后监听 键盘通知做相应的改变,

但是有很多局限性,非常不爽,而且每次都要额外写很多代码,特别复杂。相比android自带关闭键盘按钮,真想打苹果设计师一顿。


    之后发现safria浏览器里面每次弹键盘时,都会有<>完成三个按钮,心想肯定有一种第三方库可以解决键盘的问题。但是找了很长时间,也无果,最终放弃。


    半年前看别人项目时,意外发现了一个叫UIKeyboardController的库,就四个文件,代码量特别少,但是效果已经跟safria里面的一样了,我非常高兴。仔细看了看代码,里面是用UIToolBar来实现的,代码是个人写的,所以有一些缺陷:

    1.UIKeyboardController每次都必须写在ViewWillAppeare方法时,必须在页面所有的textField加载完了,才能初始化,否则会出错。

    2.每当页面关闭时,要在ViewWillDisappeare把键盘关了,否则下次再进来页面会异常。

    3.textField.delegate必须指向UIKeyboardController,导致当前viewController无法使用delegate,无法监听。

   不过虽然用起来也不太爽,但是还是给我节省了大量的时间。


    后来无意中在网上发现了一个第三方库IQKeyboadManager。这个库相当强大,你只要把它拖到项目里,就不用管了,连头文件都不用引用,不用自己初始化,还有比这更简单的吗?太强大了,最主要它兼容了很多种情况,把键盘可能出现的问题都考虑到了,总是是太强了,用了它,妈妈再也不担心我的学习了!

   不过美中不足,它的左右箭头和完成按钮的颜色是灰色不是系统蓝色的,看起来不好看。为了改变颜色,我看了好长时间的源代码,但是无论怎么改都不管用,后来就因为这个原因,我放弃这了个库,害怕我的app让同行看见了嘲笑我。

     现在想想真是可笑!现在终于弄明白了,只要把_defaultToolbarTintColor改成系统蓝色也就是

   [UIColorcolorWithRed:0.0green:122.0/255.0blue:1.0alpha:1.0]

就可以了。

   想想真是可悲,自己已经从事iOS开发3年了,到现在才真真的解决的了弹出和关闭键盘的问题,自己是够没出息的。


0 0
原创粉丝点击