IQKeyboardManager
在开发 iOS 应用时,我们经常会遇到 iPhone 键盘弹出并覆盖 UITextField/UITextView
的问题。IQKeyboardManager
允许您在不编写任何代码或进行任何额外设置的情况下,防止键盘上滑并覆盖 UITextField/UITextView
。要使用 IQKeyboardManager
,您只需将源文件添加到您的项目中。
主要功能
-
**无代码**,零行代码
-
自动工作
-
不再需要 UIScrollView
-
不再需要子类
-
不再需要手动工作
-
不再需要 #import
IQKeyboardManager
在所有方向上工作,并且与工具栏配合使用。它还有很好的可选功能,允许您自定义文本框的距离,键盘工具栏中上一页、下一页和完成的按钮行为,当用户在表单中导航时播放声音等等。
屏幕截图
GIF动画
视频
#1135)
由@rebeloper提供的教程视频(@rebeloper 展示了两个如何实现IQKeyboardManager核心功能的视频
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
构建框架,并根据需要将适当的框架(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,因此在所有appleOS类型的项目中都可以使用。它可以与其他工具(如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 requests和issues来贡献。
作者
如果您想联系我,请发送邮件至:[email protected]