美文网首页iOS猛码计划iOS开发常用iOS菜鸟级开发
iOS开发之 - 键盘处理神器 IQKeyboardManage

iOS开发之 - 键盘处理神器 IQKeyboardManage

作者: Q以梦为马 | 来源:发表于2017-02-06 15:31 被阅读23604次

年后上班第一天,比较闲,上午的时候抽空整理了iOS开发中常用的易忘知识点:iOS开发之 - 小冷易忘知识点总结,有兴趣的朋友们可以去看看。下午整理了之前用过的一个第三方库——键盘处理神器 IQKeyboardManager

平常在开发中,用到输入框的地方不胜其数,当输入框位于屏幕底部时,弹起的键盘很可能覆盖输入框,导致用户看不到输入结果,体验较差...... IQKeyboardManager 可以很简单快捷的解决键盘遮盖输入框的问题,接下来就一起来学习一下吧。

  • 先简单认识下 IQKeyboardManager
    GitHub 地址:GitHub 地址

  • 官方示意效果图如下:

官方示意效果图

再贴一下自己做的简单效果图☺️
先说下我的 Xcode 版本是:Version 8.1 (8B62),简单起见直接在 Main.storyboard 中拖入 7 个UITextField, 每个 UITextField 都设有占位文字。

简单效果图☺️

以下是 IQKeyboardManager 的一些具体使用

1. 用 Cocoapod 导入或直接下载拖进去,这里方便起见直接用 Cocoapod 导入。

IQKeyboardManager 的 GitHub地址:IQKeyboardManager 的 GitHub 地址

2. 在 AppDelegate.m 中导入头文件

#import <IQKeyboardManager/IQKeyboardManager.h> 

3. 在 AppDelegate 中设置全局属性

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    IQKeyboardManager *keyboardManager = [IQKeyboardManager sharedManager]; // 获取类库的单例变量

    keyboardManager.enable = YES; // 控制整个功能是否启用

    keyboardManager.shouldResignOnTouchOutside = YES; // 控制点击背景是否收起键盘

    keyboardManager.shouldToolbarUsesTextFieldTintColor = YES; // 控制键盘上的工具条文字颜色是否用户自定义

    keyboardManager.toolbarManageBehaviour = IQAutoToolbarBySubviews; // 有多个输入框时,可以通过点击Toolbar 上的“前一个”“后一个”按钮来实现移动到不同的输入框

    keyboardManager.enableAutoToolbar = YES; // 控制是否显示键盘上的工具条

    keyboardManager.shouldShowTextFieldPlaceholder = YES; // 是否显示占位文字

    keyboardManager.placeholderFont = [UIFont boldSystemFontOfSize:17]; // 设置占位文字的字体

    keyboardManager.keyboardDistanceFromTextField = 10.0f; // 输入框距离键盘的距离

    return YES;
}

4. 若某个类不需要使用 IQKeyboardManager,可以在这个类中这样设置

  - (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
   [IQKeyboardManager sharedManager].enable = NO;
}

  - (void)viewWillDisappear:(BOOL)animated {
  [super viewWillDisappear:animated]; 
  [IQKeyboardManager sharedManager].enable = YES;
}

5. 常用属性介绍

  • sharedManager:获取类库的单例变量
  • enable:项目使用不使用 IQKeyboardManager 这个类库,当然,某些页面可以根据需要单独设置
  • shouldResignOnTouchOutside:点击背景页面时是否收起键盘
  • shouldToolbarUsesTextFieldTintColor:控制键盘上的工具条文字颜色是否用户自定义,默认为 NO
  • toolbarManageBehaviour:有多个输入框时,可以通过点击Toolbar 上的“前一个” “后一个”按钮来实现移动到不同的输入框
  • enableAutoToolbar:是否显示键盘上的工具条
  • shouldShowTextFieldPlaceholder:是否显示占位文字(如果输入框有占位文字,那么在 Toolbar 中默认会显示出来)
  • placeholderFont:占位文字的字体大小
  • keyboardDistanceFromTextField:输入框距离键盘的距离

6. 再推荐几篇不错的相关文章

相关文章

网友评论

  • 超_iOS:4. 若某个类不需要使用 IQKeyboardManager,可以在这个类中这样设置
    这一步不起作用。。。
    Miss_QL:同问?请问可有解决方法
  • 就是懒得想名字:用九宫格键盘的时候工具条和键盘中间有空白,这个怎么解决呢
  • 怀念裸奔的童年:为什么我设置了这个IQKeyboardManager.sharedManager.enable = YES;
    怀念裸奔的童年:键盘还是挡住了输入框
  • 梁森的简书:有多个输入框时,可以通过点击Toolbar 上的“前一个” “后一个”按钮来实现移动到不同的输入框

    这个按钮怎么隐藏呢
  • SuperGhost:您好,这个可以用自定义键盘么
  • 你好牛:左右箭头没有 怎么回事
    你好牛:@SuperGhost 我觉得可能是冲突的问题 随便建个项目都有 但是我的项目怎么写都没有
    SuperGhost:解决方案在这http://www.jianshu.com/p/6179d7af660d
  • 流星载梦:IQKeyboardManager 在iOS 11下键盘完成按钮不显示有遇到吗,怎么解决:-D
    90年代的小伙子:@流星载梦 我就是用的真机, ios11.0.3, 我在github 上下载的代码直接拖到工程中,还是不行,我是xcode9
    流星载梦:@娶个名字真难 你用真机试过吗?我之前用的是4.0.7版本,现在更新了一下IQKeyboardManager库就好了
    90年代的小伙子:你解决了吗,我更新到最新版本还是这样,并不是不显示,是那个字体变成了白色
  • 西叶lv:Xcode9,iOS11,IQKeyboardManager4.0,顶部工具条,只显示占位字符串,没有切换上下行的按钮
  • chinaMonkey:用这个库怎么做到点击完成或者return后收键盘。
  • 黄昏下的奔跑:您好,我的键盘一出来自定义的输入框本来是紧挨着键盘的但是上移了两个键盘的高度,您知道是为什么吗?
    Q以梦为马:@叮当蛀书虫 输入框距离键盘的距离是可以随意设置的,你是不是不小心设置错了
  • 阿噗阿噗阿:对[UIApplication sharedApplication].keyWindow上加载的view上的控件貌似没有作用啊。
    AlexLi_:你好这个问题处理了吗?
  • _码奴:IQKeyboardManager能够自定义toolbar吗
    Q以梦为马:@_码奴 嗯,估计动源码会有点麻烦,不如试下不用 IQKeyboardManager,自己写一个 Toolbar
    _码奴:@n以梦为马 能改,完全可以自定义toolbar,说白了toolbar其实就是用了textfield和textview的一个视图属性,但是要动源码,但是我不太想动源码,里面判断太多,我怕动了源码程序崩了
    Q以梦为马:这个库没提供类似的方法,你看下源码能不能修改一下,或者把它的隐藏掉自定义一个
  • 梁森的简书:即使设置enableAutoToolbar为NO,可键盘上的工具条还是显示。 怎么隐藏键盘上面的工具条???
    一杯红酒mm:你好。请问如何让NavigationBar一直悬浮在最上面
    梁森的简书:@n以梦为马 是在AppDelegate中设置的,可当在控制器中去设置就好了。 我也不知道具体是什么原因。
    Q以梦为马:@阳光黑 是在AppDelegate中设置的吗?我的没出现这种问题吖
  • doubleJJ:第四点学到了,今天用的第三方库JSQMessagesViewController的键盘事件IQKeyboardManager与冲突,导致导航栏消失了,还找了一上午的原因呢
  • 村田花花在隔壁:楼主能否把导包写的详细一点呢?新手,按你的方法,运行报错,提示“
    'IQKeyboardManagerConstants.h' file not found”,将该文件的.h文件单独导入,依然报错

    会跳舞的狮子:已经很详细了
  • MrZombie:很厉害哦哦

本文标题:iOS开发之 - 键盘处理神器 IQKeyboardManage

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