我们写界面要考虑很多用户体验问题,键盘事件的响应就是比较麻烦的一种。我们需要监听键盘事件,考虑点击背景收起键盘、考虑键盘遮挡输入框问题等等,而且每个界面都要做这么一套。这个库帮我们解决了这个事情。

这个库的下载地址:https://github.com/hackiftekhar/IQKeyboardManager

这个库是一个单例,它一旦生效,全项目任何界面都有效。让它生效的代码可以写在任意位置,我写在AppDelegate里。

?
1
2
3
4
5
6
7
8
9
10
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
     
    IQKeyboardManager *manager = [IQKeyboardManager sharedManager];
    manager.enable = YES;
    manager.shouldResignOnTouchOutside = YES;
    manager.shouldToolbarUsesTextFieldTintColor = YES;
    manager.enableAutoToolbar = NO;
     
    return YES;
}

enable控制整个功能是否启用。

shouldResignOnTouchOutside控制点击背景是否收起键盘。

shouldToolbarUsesTextFieldTintColor 控制键盘上的工具条文字颜色是否用户自定义。

enableAutoToolbar控制是否显示键盘上的工具条。

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

使用方法,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) IQKeyboardReturnKeyHandler    *returnKeyHandler;
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
     
    self.returnKeyHandler = [[IQKeyboardReturnKeyHandler alloc] initWithViewController:self];
    self.returnKeyHandler.lastTextFieldReturnKeyType = UIReturnKeyDone;
    self.returnKeyHandler.toolbarManageBehaviour = IQAutoToolbarBySubviews;
}
- (void)dealloc
{
    self.returnKeyHandler = nil;
}
@end

设置returnKeyHandler,可以点击键盘上的next键,自动跳到下一个输入框。最后一个输入框点击done自动收起键盘。

运行后,可以看到输入框随着键盘的弹出自动上下浮动。点击背景,键盘收起。全自动了。

这个库默认支持UITextField、UITextView、UIWebView、UIScrollView、UITableView、UICollectionView

最后要注意一点,它可以自动计算多个textField之间的先后顺序,排列依据是看addSubView的先后顺序。

转载于:https://www.cnblogs.com/nngh/p/4942491.html

ios 开发日记 21 -自动处理键盘事件的第三方库:IQKeyboardManager相关推荐

  1. 自动处理键盘事件的第三方库 IQKeyboardManager

    2019独角兽企业重金招聘Python工程师标准>>> 这个库的下载地址:https://github.com/hackiftekhar/IQKeyboardManager 这个库是 ...

  2. 【iOS高级资深工程师面试篇】⑫、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 第三方库部分 AFNetworking-SDWebImageView-ReactiveCocoa

    iOS高级资深工程师面试篇系列 - 已更新3篇 UI部分1/3 -UITableView-事件传递&视图响应 UI部分2/3 -图像显示原理-UI卡顿&掉帧 UI部分3/3 -UIVi ...

  3. ios开发日记- 7 禁用搜狗键盘 使用系统键盘

    今天博主有一个强制弹出系统键盘的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 起因是在使用搜狗的过程中,使用中文字符标点产生了bug,应该是搜狗的问题.追询一番无果后,决定禁用搜狗键盘, ...

  4. iOS开发日记24-详解RunLoop

    今天博主有一个RunLoop的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. RunLoop是什么? 从字面上理解,Runloop指的就是运行循环,iOS中,只要程序启动, 就会创建Run ...

  5. IOS开发之隐藏软键盘

    1. 函数A里面有:  textFiled.inputView=[[UIView alloc]initWithFrame:CGRectZero];  //这一行成功的出现光标,没有键盘  函数B里面有 ...

  6. iOS开发日记54-Xcode7调试神技

    今天博主有一个升级Xcode7的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 1.Address Sanitizer: 再也不用担心 EXC_BAD_ACCESS EXC_BAD_ACC ...

  7. ios 开发中 关闭软键盘的方法

    文本框输入后关闭键盘: demoViewController.h 添加 - (IBAction)textFieldDoneEditing:(id)sender; demoViewController. ...

  8. ios开发日记- 5 屏幕截图

    -(void)fullScreenshots{ UIWindow *screenWindow = [[UIApplication sharedApplication] keyWindow]; UIGr ...

  9. ios开发日记-18上传appStore时,遇到错误,代码为ERROR ITMS-90049

    上传appStore时,遇到错误,代码为ERROR ITMS-90049 解决问题方式:  1. 在xcode左下角搜索info.plist 找到第三方的info.plist文件,如友盟中腾讯Api文 ...

最新文章

  1. vmware虚拟机ubuntu开机黑屏问题解决
  2. 内核模块相关命令:lsmod,depmod,modprob...
  3. 使用VS2015远程GDB调试
  4. .NET 基金会完成第一次全面改选
  5. 小程序循环里做字符串拼接_昨天还在for循环里写加号拼接字符串的那个同事,今天已经不在了...
  6. python- 决策树分类器
  7. NS2仿真分析无线网络的攻击防御(2)
  8. PHP xdebug API接口优化揪出了getimagesize这个鬼
  9. 不使用ArcObjects直接查找SDE数据库信息
  10. 傅里叶光学-函数简介
  11. iRedMail退信问题的解决
  12. 网络游戏外挂编写初级教程
  13. 使用Git上传本地项目到GitHub
  14. vue-router.esm.js?3423:2065 Uncaught (in promise) NavigationDuplicated: Avoided redundant navig错误解析
  15. 渲染算法学习(四)-- Environment Lighting
  16. oh-my-zsh配置 alias 指定指令别名
  17. 李宏毅老师《机器学习》课程笔记-3卷积神经网络
  18. 计算机音乐-乐理知识(1)
  19. idea springboot mybaits扫描不到第三方jar中的mapper
  20. 耳朵上的艺术品,飞利浦圈铁真无线耳机JT60无敌了!

热门文章

  1. leetcode124. 二叉树中的最大路径和
  2. springboot3——Email
  3. 理解Caffe的网络模型
  4. PRML(4)--Chapter2(下)-非参数估计
  5. C++(17)--详解const
  6. 计算机组网配置,计算机组网技术与配置教案..doc
  7. pom.xml 配置之:snapshot 快照库和 release发布库 的区别
  8. 解决 : Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
  9. chrome 开启 JSONview 方法,让json数据格式化显示
  10. Git使用教程-idea系列中git使用教程