OC 开发分类(Category)各种第三方库合集

键盘管理工具--IQKeyboardManager的个性化设置。

2017-11-08  本文已影响122人  逍遥晨旭

如果一个页面需要多个textfield或textview,比方说账号、密码、昵称、手机号、验证码等,或者多个界面都有textfield或textview。在输入用到键盘的时候,经常会遇到很多蛋疼的问题,比如键盘的收起,键盘遮挡输入框,输入框的切换、给键盘添加工具栏等,处理起来很头疼,因为相同的业务逻辑我们需要多次处理。这个时候我们可以感谢一下IQKeyboardManager的作者给我们提供了一个keyboard 管理工具,让我们轻松搞定这些问题。

1、IQKeyboardManager的简单应用

其实我们什么都不用做,只需将IQKeyboardManager添加到项目中就可以解决上诉问题,不用添加一行代码,甚至都不用引入头文件。IQKeyboardManager是一个单例,在全项目任何界面都有效。

框架的启用

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [[IQKeyboardManager sharedManager] setEnable:YES];
  [[IQKeyboardManager sharedManager] setEnableAutoToolbar:YES];
    return YES;
}

enable 控制整个功能是否启用。
shouldResignOnTouchOutside 控制点击背景是否收起键盘。
shouldToolbarUsesTextFieldTintColor 控制键盘上的工具条文字颜色是否用户自定义。
enableAutoToolbar 控制是否显示键盘上的工具条。

以上设置,就启用了这个库。

有时想在某个界面启用,可以在

- (void)viewWillAppear:(BOOL)animated 和 - (void)viewWillDisappear:(BOOL)animated 

里面进行开启关闭

1.修改IQKeyBoardManager的右边的Done按钮

 manager.toolbarDoneBarButtonItemText = @"完成";
或者
  manager.toolbarDoneBarButtonItemImage = [UIImage imageNamed:@"IQKeyboardImage"];

2.修改IQKeyBoardManager的Toolbar颜色等

 manager.shouldToolbarUsesTextFieldTintColor = NO;
 manager.toolbarTintColor = [UIColor redColor];

3.是否显示响应者的水印和字号

  manager.shouldShowTextFieldPlaceholder = YES;
  manager.placeholderFont = [UIFont systemFontOfSize:14.0];
  1. 设置键盘textField的距离。不能小于零。默认是10.0。<触发条件是textField需要改变y时 >

     manager.keyboardDistanceFromTextField = 10.0f;
    

5.防止IQKeyboardManager让rootview上滑过度,默认是YES

   manager.preventShowingBottomBlankSpace = NO;
  1. IQKeyBoardManager的右边的Done按钮的响应事件doneAction 事件未公开API,不过可以通过代理
 - (void)textFieldDidEndEditing:(UITextField *)textField 

2、IQKeyboardManager中几个比较重要的属性

大多数情况下默认设置不能满足项目需求,也就是说我们还是要在我们的工程中导入IQKeyboardManager的头文件,对项目进行个性化设置

   //是否启用自动键盘处理事件响应,默认为 YES。
@property(nonatomic, assign, getter = isEnabled) BOOL enable;

//键盘到 textfield 的距离,前提是 enable 属性为 YES,如果为 NO,该属性失效 不能小于0,默认为10.0
@property(nonatomic, assign) CGFloat keyboardDistanceFromTextField;

//是否显示键盘上方的 toolBar,默认为YES
@property(nonatomic, assign, getter = isEnableAutoToolbar) BOOL enableAutoToolbar;
也可以使用:
[[IQKeyboardManager sharedManager] disableToolbarInViewControllerClass:[@"控制器Controller" class]];

//枚举,toolBar管理 textfield 的方式:
   IQAutoToolbarBySubviews,根据添加顺序
   IQAutoToolbarByTag,     根据 tag 值
   IQAutoToolbarByPosition,根据坐标位置
@property(nonatomic, assign) IQAutoToolbarManageBehaviour toolbarManageBehaviour;

//toolBar 右方完成按钮的 text,默认为 Done
@property(nullable, nonatomic, strong) NSString *toolbarDoneBarButtonItemText;

//toolBar 右方完成按钮的 text,修改为图片
toolbarDoneBarButtonItemImage 

//点击输入框以外部分,是否退出键盘,默认为 NO
@property(nonatomic, assign) BOOL shouldResignOnTouchOutside;

//如果输入框有placeholder的话,那么在toolbar中默认会显示出来。不想要的话就设置为NO;
@property(nonatomic, assign) BOOL shouldShowTextFieldPlaceholder;

实例代码:

IQKeyboardManager *manager = [IQKeyboardManagersharedManager];  
manager.enable =YES;// 控制整个功能是否启用。  
manager.shouldResignOnTouchOutside =YES;//控制点击背景是否收起键盘  
manager.shouldToolbarUsesTextFieldTintColor =YES;//控制键盘上的工具条文字颜色是否用户自定义  
manager.toolbarDoneBarButtonItemText =@"完成";//将右边Done改成完成  
manager.enableAutoToolbar =YES;// 控制是否显示键盘上的工具条  
manager.toolbarManageBehaviour =IQAutoToolbarByTag;//最新版的设置键盘的    returnKey的关键字 ,可以点击键盘上的next键,自动跳转到下一个输入框,最后一个输入框点击完成,自动收起键盘。

Question

(1)、视图有导航栏,不想上移View时,UINavigationBar消失:在UIViewController中

 UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  self.view = scrollView;
上一篇 下一篇

猜你喜欢

热点阅读