前两年写textField弹键盘时总是把当前页面变成scrollView,然后监听 键盘通知做相应的改变,
但是有很多局限性,非常不爽,而且每次都要额外写很多代码,特别复杂。相比android自带关闭键盘按钮,真想打苹果设计师一顿。
之后发现safria浏览器里面每次弹键盘时,都会有<>完成三个按钮,心想肯定有一种第三方库可以解决键盘的问题。但是找了很长时间,也无果,最终放弃。
半年前看别人项目时,意外发现了一个叫UIKeyboardController的库,就四个文件,代码量特别少,但是效果已经跟safria里面的一样了,我非常高兴。仔细看了看代码,里面是用UIToolBar来实现的,代码是个人写的,所以有一些缺陷:
1.UIKeyboardController每次都必须写在ViewWillAppeare方法时,必须在页面所有的textField加载完了,才能初始化,否则会出错。
2.每当页面关闭时,要在ViewWillDisappeare把键盘关了,否则下次再进来页面会异常。
3.textField.delegate必须指向UIKeyboardController,导致当前viewController无法使用delegate,无法监听。
不过虽然用起来也不太爽,但是还是给我节省了大量的时间。
后来无意中在网上发现了一个第三方库IQKeyboadManager。这个库相当强大,你只要把它拖到项目里,就不用管了,连头文件都不用引用,不用自己初始化,还有比这更简单的吗?太强大了,最主要它兼容了很多种情况,把键盘可能出现的问题都考虑到了,总是是太强了,用了它,妈妈再也不担心我的学习了!
不过美中不足,它的左右箭头和完成按钮的颜色是灰色不是系统蓝色的,看起来不好看。为了改变颜色,我看了好长时间的源代码,但是无论怎么改都不管用,后来就因为这个原因,我放弃这了个库,害怕我的app让同行看见了嘲笑我。
现在想想真是可笑!现在终于弄明白了,只要把_defaultToolbarTintColor改成系统蓝色也就是
[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0]
就可以了。
想想真是可悲,自己已经从事iOS开发3年了,到现在才真真的解决的了弹出和关闭键盘的问题,自己是够没出息的。