美文网首页OC 开发分类(Category)各种第三方库合集
键盘管理工具--IQKeyboardManager的个性化设置。

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

作者: 逍遥晨旭 | 来源:发表于2017-11-08 16:34 被阅读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;

    相关文章

      网友评论

        本文标题:键盘管理工具--IQKeyboardManager的个性化设置。

        本文链接:https://www.haomeiwen.com/subject/qjnwmttx.html