键盘问题可能是每个项目中都可能遇到的问题,如果输入框位于屏幕的底部,弹起的键盘很可能挡住输入框,导致用户就看不到输入结果(吐槽一下网易将军令->游戏助手->游戏精灵)就是这样,问个问题自己都不知道输入的是啥,不知道输入的对不对,体验较差。以前遇到这种问题的时候一直纠结怎么处理,设置来设置去的,很是麻烦,自己也搞晕了,后来在地铁上无事看一个微信公众号推送技术文章的时候,发现了这个库,IQKeyboardManager。它是iOS中解决键盘弹起遮挡UITextField或者UITextView的一种很犀利的工具,就像文章说的那样,零行代码解决键盘问题。一试之下果然好用,于是一股脑将自己的项目都添加上了。
swift 也是支持的,我这里还是用的OC。
安装的时候只需要pod 一下就可以
pod 'IQKeyboardManager'
使用(几个用到的方法)
- 在appdelegate的 didFinishLaunchingWithOptions方法中设置全局是否开启;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//键盘
[IQKeyboardManager sharedManager].enable = YES; //默认值为NO.
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;//不显示工具条
[IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;//点空白处收回
}
- 如果在哪里不想用这个的话,只需要在viewWillAppear方法里面设置NO,在viewWillDisAppear中设置回YES 即可;
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[IQKeyboardManager sharedManager].enable = NO;
}
//注意,这个一定要设,不然会出奇葩的问题,有些地方也不可用,也就是出个这个view要重新设置回去
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[IQKeyboardManager sharedManager].enable = YES;
}
- 点击旁边的空白处收起键盘;这里是控制单个页面,上面的是全局的
- (void)viewDidLoad {
[super viewDidLoad];
[IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
}
-
如果使用的是storybord或者Xib的话,class改成UIScrollVeiw即可(被坑过);
2016091459356QQ20160914-0.png
常用的属性
- 输入框到键盘的距离,默认是10px。修改的话,等号后面的值自己定,但是10感觉最合适了, 根据个人习惯吧。。。
[IQKeyboardManager sharedManager].keyboardDistanceFromTextField = 0.0f;
- 防止上滑过渡,离得太远;
[IQKeyboardManager sharedManager].preventShowingBottomBlankSpace = NO;
当然这个框架还有很多用得到的 地方,不过目前就用了这一点点,先记录下来,以后用到再补充。
网友评论