自 2013 年首次发布以来,已经过去了 12 年。该库已经发展了很多,我们从那时起添加了许多新功能。
最近在修复错误时,我意识到 2013 年 Objective-C 版本中只有 2 个文件 IQKeyboardManager.{h,m},而现在 Swift 版本中有 50 多个文件(版本 7.x.x),这使得调试比以前困难得多。此外,某些功能在应用程序中很少使用。
我意识到某些功能彼此之间没有紧密联系,可以很容易地从库中移出。例如:-
IQTextView
类IQKeyboardListener
类IQTextFieldViewListener
类IQReturnKeyHandler
类IQToolbar
和 IQBarButtonItem
及其支持类。将上述内容移出将使库更轻量级,用户可以根据需要插入/拔出功能。
我决定将松散耦合的功能移出,并将它们发布到各自的 github 仓库,并根据需要将它们用作依赖项。
IQKeyboardManager
相关库使用的必要类和函数。请注意,您不应直接将其安装为依赖项。UITextView
中显示占位符。IQReturnKeyHandler
的重命名版本。它也与库分离,可以独立使用。IQKeyboardCore
来进行 TextInputView
类型确认。IQTextFieldViewListener
的重命名版本。它可以独立用于订阅/取消订阅 UITextView
/UITextField
beginEditing/endEditing 事件。IQKeyboardCore
来为 UITextView
/UITextField
添加一些额外的自定义功能。IQKeyboardToolbar
、IQBarButtonItem
、IQTitleBarButtonItems
、它们的配置类以及其他有用的函数,用于在键盘中添加工具栏。它可以独立用于在键盘中添加工具栏。IQKeyboardCore
来为 UITextView
/UITextField
添加一些额外的自定义功能。IQKeyboardManager
有些相似。作为一个重大更新,它已从库中移出。IQTextInputViewNotification
来了解当前哪个 textField 处于焦点。IQKeyboardToolbar
以在键盘上添加/删除工具栏。IQKeyboardListener
的重命名版本。它可以独立用于订阅/取消订阅键盘事件。UITextView
/UITextField
之间距离及其有用功能的函数。IQKeyboardNotification
以获取键盘通知回调。IQTextInputViewNotification
来了解当前哪个 textField 处于焦点。IQKeyboardManagerSwift/Appearance
IQKeyboardManagerSwift/IQKeyboardReturnManager
IQKeyboardManagerSwift/IQKeyboardToolbarManager
IQKeyboardManagerSwift/IQTextView
IQKeyboardManagerSwift/Resign
在开发 iOS 应用程序时,我们经常遇到 iPhone 键盘向上滑动并覆盖 UITextField/UITextView
的问题。IQKeyboardManager
允许您防止键盘向上滑动并覆盖 UITextField/UITextView
的问题,而无需您编写任何代码或进行任何额外的设置。要使用 IQKeyboardManager
,您只需将源文件添加到您的项目中即可。
一行代码
自动工作
不再需要 UIScrollView
不再需要子类
不再需要手动工作
不再需要 #imports
IQKeyboardManager
适用于所有方向和工具栏。它还具有很好的可选功能,允许您自定义与文本字段的距离、键盘工具栏中上一个、下一个和完成按钮的行为、在用户浏览表单时播放声音等。
@rebeloper 演示了两个关于如何在核心实现 IQKeyboardManager 的视频
https://www.youtube.com/playlist?list=PL_csAAO9PQ8aTL87XnueOXi3RpWE2m_8v
语言 | 最低 iOS 目标 | 最低 Xcode 版本 | |
---|---|---|---|
IQKeyboardManager | Obj-C | iOS 13.0 | Xcode 13 |
IQKeyboardManagerSwift | Swift | iOS 13.0 | Xcode 13 |
演示项目 | Xcode 15 |
Swift | Xcode | IQKeyboardManagerSwift |
---|---|---|
5.9, 5.8, 5.7 | 16 | >= 7.0.0 |
5.9, 5.8, 5.7, 5.6 | 15 | >= 7.0.0 |
5.5, 5.4, 5.3, 5.2, 5.1, 5.0, 4.2 | 11 | >= 6.5.7 |
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 |
IQKeyboardManager (Objective-C): 要安装它,只需将以下行添加到您的 Podfile 中:(#9)
pod 'IQKeyboardManager' #iOS13 and later
IQKeyboardManager (Swift): 要安装它,只需将以下行添加到您的 Podfile 中:(#236)
pod 'IQKeyboardManagerSwift'
或者您可以根据 Requirements 中的 Swift 支持表选择您需要的版本
pod 'IQKeyboardManagerSwift', '8.0.0'
要使用 Carthage 将 IQKeyboardManger
或 IQKeyboardManagerSwift
集成到您的 Xcode 项目中,请将以下行添加到您的 Cartfile
github "hackiftekhar/IQKeyboardManager"
运行 carthage update --use-xcframeworks
以构建框架,并将适当的框架 (IQKeyboardManager.xcframework
或 IQKeyboardManagerSwift.xcframework
) 拖到您的 Xcode 项目中,根据您的需要。请确保只添加一个框架,而不是两个。
要通过 Xcode 安装 IQKeyboardManagerSwift
包
IQKeyboardManager (Objective-C): 只需将 IQKeyboardManager
目录从演示项目拖放到您的项目中即可。就这样。
IQKeyboardManager (Swift): 不支持源代码安装(自 7.2.0 以来),因为现在该库依赖于其他一些独立的库。因此,您可能会遇到编译问题。
在 AppDelegate.swift
中,只需 import IQKeyboardManagerSwift
框架并启用 IQKeyboardManager。
import IQKeyboardManagerSwift
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
IQKeyboardManager.shared.isEnabled = true
return true
}
}
如果您想查看详细的流程图,请查看 详细的流程图。
在 MIT 许可证下分发。
欢迎任何贡献!您可以通过 GitHub 上的 pull request 和 issue 做出贡献。
如果您希望与我联系,请发送电子邮件至:hack.iftekhar@gmail.com