[iOS 第三方库介绍]自动处理键盘事件的第三方库 IQKeyboardManager

news/2024/7/20 20:07:59 标签: ios, , 界面, keyBoard, 键盘响应

转载自此文章,点击查看

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

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

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

使用方法

- (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控制是否显示键盘上的工具条。

以上设置,就启用了这个

使用方法,代码如下:


#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的先后顺序。


http://www.niftyadmin.cn/n/1557633.html

相关文章

如何解决node_modules包压缩出错或者拷贝不全的问题(内网开发)

前言: 最近开发项目因为公司对数据和项目安全很看重。所以开发就是用虚拟桌面开发,虚拟桌面里没有网。对前端来说还是很致命,很繁琐的,因为无论用vue/react都离不开node_module(依赖包)。一般正常开发只需…

eyoucms标签常用函数

【基础用法】名称:无功能:作用于标签变量语法:{$field.typename|html_msubstr###,0,10,true}注意:函数与字段名之间用竖线(|)隔开,###表示当前变量参数:无底层字段:无函数…

[iOS 抽屉DDMenuController] 侧边弹出库 使用

步骤如下: 1.必须先定义左侧栏,右侧栏的内容,分别为LeftViewController,RightViewController. 2.在AppDelegate中添加方法: ViewController *viewController [[ViewController alloc]init]; UINavigationController *nav [[U…

FileZilla部署项目(前端)

前言: 之前部署项目都是我自己npm run build之后把dist目录给后台,他自己放到服务器下,或者是使用jekenis(自动化部署)。这家公司让自己部署于是就找到了FileZilla。 FileZilla简介 FileZilla是一个免费开源的FTP软件&#xff…

mybatis中获取sqlSession的源码分析

2019独角兽企业重金招聘Python工程师标准>>> 0 SqlSessionFactoryBuilder类 SqlSessionFactoryBuilder sqlSessionFacotorySqlSessionFactoryBuilder().build(reader) public SqlSessionFactory build(Reader reader) { return build(reader, null, null); } 它使用…

[iOS NSString转NSDictionary] JSON格式字符串转字典

有时候,我们从后台拿到的是一串字符串 他是标准的json格式 下面这个方法,就可以让json格式的字符串 转成 我们所需要的dict (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString {if (jsonString nil) {return nil;}NSData *jsonData [jsonString dataUsingE…

antd-pro 全局调用dva的store数据以及dispatch方法

最近在用umiantd-pro做项目记录一下出现的问题及踩坑。 一、问题及解决方案 在全局调用dva的数据及dispatch方法(比如:request.js里调用)解决方案: import {getDvaApp} from umi; //第一种 getDvaApp()._store.dispatch({ //调用dispatch(…

Spring深入理解(三)

Spring 中 AOP 特性详解 动态代理的实现原理 要了解 Spring 的 AOP 就必须先了解动态代理的原理,因为 AOP 就是基于动态代理实现的。动态代理还要从 JDK 本身说起。 在 Jdk 的 java.lang.reflect 包下有个 Proxy 类,它正是构造代理类的入口。这个类的结构…