美文网首页iOS技术中心iOS开发技术部落iOS进阶之路
iOS开发之处理键盘问题神器IQKeyboardManager

iOS开发之处理键盘问题神器IQKeyboardManager

作者: Ke_Wang | 来源:发表于2016-09-14 11:35 被阅读2045次

    键盘问题可能是每个项目中都可能遇到的问题,如果输入框位于屏幕的底部,弹起的键盘很可能挡住输入框,导致用户就看不到输入结果(吐槽一下网易将军令->游戏助手->游戏精灵)就是这样,问个问题自己都不知道输入的是啥,不知道输入的对不对,体验较差。以前遇到这种问题的时候一直纠结怎么处理,设置来设置去的,很是麻烦,自己也搞晕了,后来在地铁上无事看一个微信公众号推送技术文章的时候,发现了这个库,IQKeyboardManager。它是iOS中解决键盘弹起遮挡UITextField或者UITextView的一种很犀利的工具,就像文章说的那样,零行代码解决键盘问题。一试之下果然好用,于是一股脑将自己的项目都添加上了。
    swift 也是支持的,我这里还是用的OC。

    IQKeyboardManager的github地址

    安装的时候只需要pod 一下就可以

    pod 'IQKeyboardManager'
    

    使用(几个用到的方法)

    • 在appdelegate的 didFinishLaunchingWithOptions方法中设置全局是否开启;
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        //键盘
        [IQKeyboardManager sharedManager].enable = YES; //默认值为NO.
        [IQKeyboardManager sharedManager].enableAutoToolbar = NO;//不显示工具条
        [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;//点空白处收回
    }
    
    • 如果在哪里不想用这个的话,只需要在viewWillAppear方法里面设置NO,在viewWillDisAppear中设置回YES 即可;
    - (void)viewWillAppear:(BOOL)animated{
      [super viewWillAppear:animated];
       [IQKeyboardManager sharedManager].enable = NO;
    }
    //注意,这个一定要设,不然会出奇葩的问题,有些地方也不可用,也就是出个这个view要重新设置回去
    - (void)viewWillDisappear:(BOOL)animated{
      [super viewWillDisappear:animated]; 
      [IQKeyboardManager sharedManager].enable = YES;
    }
    
    
    • 点击旁边的空白处收起键盘;这里是控制单个页面,上面的是全局的
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        [IQKeyboardManager sharedManager].shouldResignOnTouchOutside = YES;
    }
    
    • 如果使用的是storybord或者Xib的话,class改成UIScrollVeiw即可(被坑过);


      2016091459356QQ20160914-0.png

    常用的属性

    • 输入框到键盘的距离,默认是10px。修改的话,等号后面的值自己定,但是10感觉最合适了, 根据个人习惯吧。。。
    [IQKeyboardManager sharedManager].keyboardDistanceFromTextField = 0.0f;
    
    • 防止上滑过渡,离得太远;
    [IQKeyboardManager sharedManager].preventShowingBottomBlankSpace = NO;
    

    当然这个框架还有很多用得到的 地方,不过目前就用了这一点点,先记录下来,以后用到再补充。

    相关文章

      网友评论

      • 阿噗阿噗阿:对[UIApplication sharedApplication].keyWindow上加载的自定义View输入弹出框里的控件貌似没有作用啊。
      • 洁简:手势返回Toolbar还在怎么办?

      本文标题:iOS开发之处理键盘问题神器IQKeyboardManager

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