IQKeyboardManager
在开发iOS应用程序时,我们经常会遇到iPhone键盘滑出覆盖UITextField/UITextView
的问题。《IQKeyboardManager》允许您无需编写任何代码或进行任何额外设置即可防止此问题,防止键盘滑出并覆盖UITextField/UITextView
。要使用《IQKeyboardManager》,您只需将源文件添加到项目中。
主要功能
-
**无代码**,零行代码
-
自动运行
-
无需UIScrollView
-
无需子类
-
无需手动操作
-
无需#导入
IQKeyboardManager
适用于所有方向,并且与工具栏一起工作。它还具有一些优秀的可选功能,允许您自定义文本字段距离、键盘工具栏中上一个、下一个和完成按钮的行为、在用户在表单中导航时播放声音等。
屏幕截图
GIF动画
视频
的方法的教程视频 (#1135)
由@rebeloper演示了两种如何在核心处实现@rebeloper演示了两个关于如何实现
https://www.youtube.com/playlist?list=PL_csAAO9PQ8aTL87XnueOXi3RpWE2m_8v
警告
- 如果你计划构建SDK/库/框架并希望使用IQKeyboardManager处理UITextField/UITextView,那么你完全走错了方向。 我绝对不会建议将 IQKeyboardManager 作为 依赖项/添加/打包 任何第三方库。而不是添加 IQKeyboardManager,你应该实施自己的解决方案以实现相同的结果。IQKeyboardManager 完全是为项目设计,以帮助开发者提供便利,它不是为了与任何 第三方库 添加/依赖/打包 而设计的,因为这可能会阻止其他开发者(不是使用IQKeyboardManager并在项目中实施自定义解决方案以处理UITextField/UITextView的开发者)接受使用。
- 如果 IQKeyboardManager 与其他 第三方库 发生冲突,那么在呈现/消失第三方库UI时,开发者责任 是启用/禁用 IQKeyboardManager。第三方库不负责处理IQKeyboardManager。
要求
语言 | 最低iOS目标 | 最低Xcode版本 | |
---|---|---|---|
IQKeyboardManager | Obj-C | iOS 8.0 | Xcode 9 |
IQKeyboardManagerSwift | Swift | iOS 8.0 | Xcode 9 |
示例项目 | Xcode 11 |
支持的Swift版本
Swift | Xcode | IQKeyboardManagerSwift |
---|---|---|
5.1, 5.0, 4.2, 4.0, 3.2, 3.0 | 11 | >= 6.5.0 |
5.0,4.2, 4.0, 3.2, 3.0 | 10.2 | >= 6.2.1 |
4.2, 4.0, 3.2, 3.0 | 10.0 | >= 6.0.4 |
4.0, 3.2, 3.0 | 9.0 | 5.0.0 |
安装
使用 CocoaPods 安装
IQKeyboardManager (Objective-C): IQKeyboardManager 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行:#9
pod 'IQKeyboardManager' #iOS8 and later
IQKeyboardManager (Swift): IQKeyboardManagerSwift 通过 CocoaPods 提供。要安装它,只需在 Podfile 中添加以下行:#236
Swift 5.1, 5.0, 4.2, 4.0, 3.2, 3.0 (Xcode 11)
pod 'IQKeyboardManagerSwift'
或者,根据 Swift 支持表格从 需求 选择所需版本。
pod 'IQKeyboardManagerSwift', '6.3.0'
在 AppDelegate.swift 中,只需导入 IQKeyboardManagerSwift 框架并启用 IQKeyboardManager。
import IQKeyboardManagerSwift
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
IQKeyboardManager.shared.enable = true
return true
}
}
使用 Carthage 安装
Carthage 是一个去中心化的依赖项管理器,它会构建您的依赖项并提供二进制框架。
您可以使用以下命令通过 Homebrew 安装 Carthage:
$ brew update
$ brew install carthage
要使用 Carthage 把 IQKeyboardManger
或 IQKeyboardManagerSwift
集成到您的 Xcode 项目中,请将以下行添加到您的 Cartfile
中。
github "hackiftekhar/IQKeyboardManager"
运行 carthage
构建 framework,并将适当的 framework(《IQKeyboardManager.framework 或 IQKeyboardManagerSwift.framework
)拖放到您的 Xcode 项目中。请确保只添加一个框架,而不是两个。
使用源代码安装
IQKeyboardManager (Objective-C): 只需将 IQKeyboardManager目录从示例项目拖到您的项目中即可。
IQKeyboardManager (Swift): 将 IQKeyboardManagerSwift目录从示例项目拖到您的项目中。
在 AppDelegate.swift 中,只需启用 IQKeyboardManager。
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
IQKeyboardManager.shared.enable = true
return true
}
}
使用 Swift 包管理器安装
Swift 包管理器(SPM)是苹果公司的依赖项管理工具。它现在在 Xcode 11 中受到支持,因此它可以用于所有苹果OS类型的项目。它可以与其他工具(如 CocoaPods 和 Carthage)一起使用。
要将 IQKeyboardManager 包安装到您的包中,请向 Package.swift
文件中的依赖项部分添加对 IQKeyboardManager 的引用和目标发布版本。
import PackageDescription
let package = Package(
name: "YOUR_PROJECT_NAME",
products: [],
dependencies: [
.package(url: "https://github.com/hackiftekhar/IQKeyboardManager.git", from: "6.5.0")
]
)
通过 Xcode 安装 IQKeyboardManager 包
- 转到 文件 -> Swift 包 -> 添加包依赖项...
- 然后在搜索框中搜索 https://github.com/hackiftekhar/IQKeyboardManager.git
- 然后选择您想要的版本
迁移指南
其他链接
流程图
如果您想查看详细的流程图,请查看 详细流程图。
许可证
在MIT许可证下分发。
贡献
任何贡献都受欢迎!您可以通过GitHub上的pull请求和问题来贡献。
作者
如果您想与我联系,请发送电子邮件至:[email protected]