在项目中,我们经常会用到UITextField输入框,但是当输入框在屏幕的下半部分的时候,就会遇到键盘遮挡住输入框的问题,通常情况下我们会用通知中心,注册关于键盘出现或者隐藏的通知,或者直接注册改变键盘尺寸的通知.诚然,这些都是最常见的做法,但是今天给大家介绍一个更简洁的做法,用一个第三方-----IQKeyboardManager.
这里是下载地址IQKeyboardManager,当然你也可以直接使用Cocoapod.
那么具体怎么使用呢?其实它的使用是非常简单的,只需要在APP代理的入口方法内写一行代码就可控制自动键盘处理事件在整个项目内是否启用。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//打开自动检测键盘是否遮挡, 默认值为NO.
[IQKeyboardManager sharedManager].enable = YES;
}
//如果产品需要当键盘弹起时,点击背景收起键盘,也是一行代码解决。
[IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
//是否需要隐藏Toolbar工具条
[IQKeyboardManager sharedManager].enableAutoToolbar = NO;
如果当某一个输入框特定不需要键盘上的工具条时,一行代码
textField.inputAccessoryView = [[UIView alloc] init];
//当某一个界面不需要自动键盘处理事件时,可以在视图将要显示和将要消失的时候调用关闭设置
- (void) viewWillAppear: (BOOL)animated {
//打开键盘事件相应
[IQKeyboardManager sharedManager].enable = YES;
}
- (void) viewWillDisappear: (BOOL)animated {
//关闭键盘事件相应
[IQKeyboardManager sharedManager].enable = NO;
}
//可以把toolbar右边的done按钮自定义标题
[IQKeyboardManager sharedManager].toolbarDoneBarButtonItemText = @"123456";
//可以设置图片
[IQKeyboardManager sharedManager].toolbarDoneBarButtonItemImage = [UIImage imageNamed:@"IQKeyboardManagerScreenshot"];
//设置done标题字体已经上下箭头的颜色
[IQKeyboardManager sharedManager].shouldToolbarUsesTextFieldTintColor = NO;
[IQKeyboardManager sharedManager].toolbarTintColor = [UIColor redColor];
IQKeyBoardManager的右边的Done按钮的响应事件doneAction 事件未公开API,不过可以通过代理
- (void)textFieldDidEndEditing:(UITextField *)textField
怎么样,是不是觉得这个第三方很好用,但是这里有一个问题,那就是当你存在导航栏的时候,使用IQKeyboardManager时,点击textfield视图向上滚动的时候造成导航栏栏消失,怎么解决呢?
-(void)loadView{
UIScrollView *scrollView = [[UIScrollView alloc]initWithFrame:[UIScreen mainScreen].bounds];
scrollView.contentSize = CGSizeMake(self.view.frame.size.width, self.view.frame.size.height);
self.view = scrollView;
}
当然上面这种处理方式只是你用纯代码开发的解决办法,而当你使用storyboard/xib的时候怎么处理呢? 使用storyboard/xib的时候会默认设置view为根视图,你只需要将其改为scrollView就OK了,当然别忘了设置新的约束.
网友评论