-
用法
简单好用的处理键盘事件的第三方库,用法直接拿过来:
这个库是一个单例,它一旦生效,全项目任何界面都有效。让它生效的代码可以写在任意位置,一般写在AppDelegate里:
- (BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions {
IQKeyboardManager *manager = [IQKeyboardManager sharedManager];
manager.enable =YES;
manager.shouldResignOnTouchOutside =YES;
manager.shouldToolbarUsesTextFieldTintColor =YES;
manager.enableAutoToolbar =NO;
returnYES;
}
默认支持UITextField、UITextView、UIWebView、UIScrollView、UITableView、UICollectionView
-
在scrollView上使用的问题
使用UIScrollView弹键盘时,会自动调整scrollView的contentOffset,之前的版本在IQKeyboardManager.h文件里有一个BOOL类型的属性shouldRestoreScrollViewContentOffset,就是还原scrollView的contentOffset,默认值是NO,后来被废弃了,多了一个IQUIScrollView+Additions的分类
这个分类里就一个属性shouldRestoreScrollViewContentOffset默认值也是NO。既然默认值为NO,不知道为什么使用过程中,scrollViewd的contentOffset总是被还原,代码设置为NO也不好使。
最后只能将这个控制器的IQKeyboardManager禁用掉。
-
为某一个ViewController禁用IQKeyboardManager
如果你想在某个viewcontroller禁用IQKeyboardManager你应该在ViewDidAppear中禁用IQKeyboardManager,而在ViewWillDisappear启用它
#import"IQKeyboardManager.h"
@implementation ElevenViewController
{
BOOL_wasKeyboardManagerEnabled;
}
-(void)viewDidAppear:(BOOL)animated{
[superviewDidAppear:animated];
_wasKeyboardManagerEnabled = [[IQKeyboardManager sharedManager] isEnabled];
[[IQKeyboardManager sharedManager] setEnable:NO];
}
-(void)viewWillDisappear:(BOOL)animated{
[superviewWillDisappear:animated];
[[IQKeyboardManager sharedManager] setEnable:_wasKeyboardManagerEnabled];
}
@end
禁用后不会有还原contentOffset情况出现,但是如果键盘遮住输入框,就只能自己处理了。