IQKeyboardManager的使用

作者: 香橙柚子 | 来源:发表于2017-04-01 16:42 被阅读6225次

    在iOS开发中,经常会出现在UITextField/UITextView中输入东西的时候,弹起的键盘遮挡住了页面下面,很不方便,IQKeyboardManager就是解决这一棘手问题的.而且IQKeyboardManager使用简单,无需添加任何代码,也不需要特别的设置,上手很快.只需要cocopods一下,轻松结局问题.

    IQKeyboardManager支持Objective-C和swift,另外, IQKeyboardManager是全局性质的额,也就是你pod之后,整个工程都会具有这个特性,如果某个页面不想这样,那么在哪个页面关闭这个功能就行.

    下面简单介绍一下常用的几个小功能.

    1.当键盘弹起的时候,自动上移View,使底部容易被遮挡的部分自动移动到键盘的上方。

    图1.gif

    当我们导入这个框架的时候,所有页面默认都有这个效果.无需做任何修改,当我们想在某个页面里不适用这个效果的时候,只要在这个页面导入头文件

    #import <IQKeyboardManager.h> //头文件
    

    再加入以下代码即可.

     - (void)viewWillAppear:(BOOL)animated{
         [super viewWillAppear:animated];
         //写入这个方法后,这个页面将没有这种效果
         [IQKeyboardManager sharedManager].enable = NO;
        }
        - (void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:animated];
        //最后还设置回来,不要影响其他页面的效果
        [IQKeyboardManager sharedManager].enable = YES;
        }
    

    2.当键盘弹起的时候,我们希望点击空白处,键盘可以收回,如下图2效果.

    图2.gif

    当我们想实现图2的效果时,首先导入头文件
    #import <IQKeyboardManager.h>
    再加入以下代码:

    - (void)viewWillAppear:(BOOL)animated{
         [super viewWillAppear:animated];
         //点击背景收回键盘
         [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
     }
    - (void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:animated];
     }
    

    写在viewWillAppear里面是为了在页面显示之前就有这个效果,提前加载.

    3.在键盘上方有一个tooBar,当我们不想它显示出来的时候.加入下面这句代码.

    [IQKeyboardManager sharedManager].enableAutoToolbar = NO;
    
    1. 键盘Return键的处理.
      可以将键盘上Return键变为next键,点击进入下一个输入框,最后一个UITextField/UITextView的时候变为Done,点击收起键盘.
    图3.gif

    首先导入头文件:

    #import <IQKeyboardReturnKeyHandler.h>
    

    再写一个IQKeyboardReturnKeyHandler成员变量,并实例化.如下:

    @implementation XXSecondViewController
    {
    IQKeyboardReturnKeyHandler * _returnKeyHander;
    }
    
    - (void)viewWillAppear:(BOOL)animated{
      [super viewWillAppear:animated];
       _returnKeyHander = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self];
    }
    - (void)viewWillDisappear:(BOOL)animated{
      [super viewWillDisappear:animated];
    }
    

    IQKeyboardManager的底层其实就是写了一个sharedManager的单例,并重写了load方法,使其优先加载.这里只是简单常用的几个方法,已经够用.
    这个框架功能强大,继续研究底层.

    最后附上下载链接:https://github.com/hackiftekhar/IQKeyboardManager

    相关文章

      网友评论

      本文标题:IQKeyboardManager的使用

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