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

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

这个库的下载地址: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459562.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shopify在哪里填写html,[Shopify开店教程]添加嵌入代码

添加嵌入代码在Shopify管理员中创建购买按钮后,您就可以将其添加到您自己的网站或博客中。将嵌入代码添加到您网站的源HTML的过程有所不同,具体取决于您希望购买按钮和购物车在您的发布平台上显示的方式和位置,以及有时您在该平台上使用的主题…

activity生命周期图

转载于:https://www.cnblogs.com/aqianglala/p/4344431.html

华硕台式计算机光盘怎么启动不了,华硕笔记本怎么用光盘重装系统 笔记本重装系统失败怎么办...

华硕笔记本是现在非常热门的笔记本品牌,很多的华硕笔记本用户在重装系统的时候,大多数会用上光盘,这种重装方式较为简单,所以备受青眯,不过呢还是有很多电脑用户不知道怎么用光盘重装系统,没关系&#xff0…

怎么安装Win10,硬盘安装Win10系统图文教程

2019独角兽企业重金招聘Python工程师标准>>> http://jingyan.baidu.com/article/f25ef254613ffd482c1b8236.html 分享到 一键分享 QQ空间 新浪微博 百度云收藏 人人网 腾讯微博 百度相册 开心网 腾讯朋友 百度贴吧 豆瓣网 搜狐微博 百度新首页 QQ好友…

iOS高级必备

1.你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗? Objecitve-C的重要特性是Runtime(运行时&…

游戏计算机重要参数,这真的很重要吗 游戏鼠标三大参数之谜

1游戏鼠标三大参数:采样率[中关村在线键鼠频道原创]游戏鼠标作为目前最受消费者关注的外设产品,其销量以及利润在市场上也是表现最为出色的,众多游戏外设厂商也推出各种各样的游戏鼠标,各种霸气的名字更是让我们看的眼花缭乱&…

[Android]Activity启动过程

Android系统启动加载流程: 参考图 Linux内核加载完毕启动init进程init进程fork出zygote进程zygote进程在ZygoteInit.main()中进行初始化的时候fork出SystemServer进程SystemServer进程开启的时候初始化ActivityThread和ActivityManagerService(其它还有P…

CentOS 7 中firewall-cmd命令

在 CentOS 7 暂时开放 ftp 服务# firewall-cmd --add-serviceftp永久开放 ftp 服务# firewall-cmd --add-serviceftp --permanent永久关闭# firewall-cmd --remove-serviceftp --permanentsuccess让设定生效# systemctl restart firewalld检查设定是否生效# iptables -L -n | g…

计算机网络又称国际互联网,Internet属于( )。 A.国际互联网B.内部网C.局域网D.电话网 - 作业在线问答...

相关题目与解析Internet属于()。A.内部网B.局域网C.公用电话网D.国际互联网Internet称为()。A.国际互联网B.广域网C.局域网D.世界信息网INTERNET也称为()。A.局域网B.对等网C.国际互联网D.以太网因特网(Internet)又称A、局域网B、…

substring 在C#,Javascript,SQL 中index开始值

substring函数index参数在三个平台的开始值: 平台index参数开始值C#0Javascript0SQL1转载于:https://www.cnblogs.com/jimcsharp/p/4354192.html

Android的十六进制颜色值

颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0 到 255(00 到 ff)。对于 alpha,00 表示完全透明,ff 表示完全不透明。表达式顺序是“aabbggrr”,其中“aaalpha”(00 到 ff&am…

在线mod计算机,MOD大师教程 手把手教你改造电脑机箱

MOD将代替DIY风靡中国中国的DIY已经从P2时代极少数的用户发展到现在让品牌机头疼不已的庞大用户群体,电脑的DIY已经不能再被说成是一个技术了。那么追求个性的玩家们只能坐以待毙吗?当然不是了,于是MOD在国内也慢慢地兴盛起来。漂亮的机箱主题…

signals系列之一——基本用法

摘自:http://zengrong.net/post/1504.htm转载于:https://www.cnblogs.com/man-li/p/4354201.html

桌面上的文件使计算机变慢吗,电脑用久了会变卡怎么办?让电脑变得流畅方法图解...

工作生活中我们的电脑时间用久了,就会变得很卡,那么如何做会让电脑变得流畅一点呢,小编教大家几招。步骤首先要保持windows桌面整洁,尽量少放一些文件,因为桌面上的文件都是放在C盘,电脑系统一般也是装在C盘…

FetchType与FetchMode的区别

使用例: OneToMany(mappedBy"item",cascadeCascadeType.ALL,fetchFetchType.EAGER) Fetch(valueFetchMode.SUBSELECT) 两者比较: 两者都是设定关联对象的加载策略。前者是JPA标准的通用加载策略注解属性, 后者是Hibernate自有加载…

计算机无线局域网毕业论文,谈教学设计《计算机网络》网络课程“无线局域网”单元的设计与开发大专毕业论文范文...

中文摘要4-5ABSTRACT5-91 引论9-221.1 不足的提出9-101.2 国内外探讨近况10-131.2.1 文献综述10-121.2.2 网络课程建设近况12-131.3 探讨目标以及作用131.3.1 探讨目标131.3.2 探讨作用131.4 探讨的策略13-141.5 探讨的思路14-221.5.1 任务驱动教学法15-181.5.2 MOODLE 平台介绍…

单例模式到Java内存模型

先说单例模式: 经典的单例模式实现: 饿汉式: public class Singleton {private static Singleton instance new Singleton();public static Singleton getInstance(){return instance;} } 懒汉式: public class Singleton {priva…

html 转word c#,c#操作word类,进行html和word文档的互相转换

#region 把Word文档装化为Html文件/** ///把Word文档装化为Html文件/// /// 要转换的Word文档public static void WordToHtml( stringstrFileName ){string saveFileName strFileName DateTime.Now.ToString( "yyyy-MM-dd-HH-mm-ss" ) ".html";WordToHt…

poj 1276 多重背包

735 3 4 125 6 5 3 350    //735的最大额&#xff0c;3种&#xff0c;4个125,6个5,3个350 633 4 500 30 6 100 1 5 0 1 735 0 0 3 10 100 10 50 10 10 735 630 0 0 1 #include<cstdio>2 #include<iostream>3 #include<algorithm>4 #include<…

《深入剖析Tomcat》阅读(三)

这里要介绍下Tomcat的一个重要设计方法&#xff0c;Catalina设计方式。 Servlet容器是一个复杂系统&#xff0c;但是&#xff0c;它有三个基本任务&#xff0c;对每个请求&#xff0c;servlet容器会为其完成以下三个操作&#xff1a; 1.创建一个Request对象&#xff0c;用可能会…