这个库为处理常见的键盘任务提供了便利。主要有以下几个目标
UITextField
或 UITextView
。UITextField
之间导航。UIToolbar
子类,以便您可以更快地创建自己的输入附件视图。UIScrollView
或其子类之一一起使用。KeyboardDismissable
和 KeyboardScrollable
。UIToolbar
的子类,具有自定义选项,可快速创建您自己的输入附件视图。KeyboardToolbar
或使用键盘的返回键来处理文本输入之间的导航。遵循此协议以启用在键盘显示时通过点击屏幕关闭键盘的功能。
class ViewController: UIViewController, KeyboardDismissable {
override func viewDidLoad() {
super.viewDidLoad()
setupKeyboardDismissalView()
}
}
遵循此协议以启用在键盘显示时滚动到第一响应者的功能。必须与 UIScrollView
或其子类之一一起使用。
class ViewController: UIViewController, KeyboardScrollable {
@IBOutlet private var scrollView: UIScrollView!
var keyboardScrollableScrollView: UIScrollView? {
return scrollView
}
var keyboardWillShowObserver: NSObjectProtocol?
var keyboardWillHideObserver: NSObjectProtocol?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
setupKeyboardObservers()
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
removeKeyboardObservers()
}
}
创建您自己的输入附件视图,用于在文本输入之间导航。使用便捷方法创建后退/下一步/完成按钮,或提供您自己的 UIBarButtonItem
。
let keyboardToolbar = KeyboardToolbar()
keyboardToolbar.addButton(type: .back, title: "Back")
keyboardToolbar.addButton(type: .next, title: "Next")
keyboardToolbar.addFlexibleSpace()
keyboardToolbar.addSystemDoneButton()
查看 KeyboardToolbar
以获取其他按钮添加选项。
创建一个 KeyboardToolbar
,根据需要配置后退/下一步/完成按钮。然后,创建一个 KeyboardNavigator
,传入您的文本输入和工具栏。文本输入的顺序决定了从一个到下一个的导航顺序。可选地,实现 KeyboardNavigatorDelegate
以在点击 KeyboardToolbar
中的“后退”、“下一步”和“完成”时接收回调。
class ViewController: UIViewController {
@IBOutlet private var textInput1: UITextField!
@IBOutlet private var textInput2: UITextView!
private var keyboardNavigator: KeyboardNavigator?
override func viewDidLoad() {
super.viewDidLoad()
let keyboardToolbar = KeyboardToolbar()
keyboardNavigator = KeyboardNavigator(textInputs: [textInput1, textInput2], keyboardToolbar: keyboardToolbar)
keyboardNavigator?.delegate = self
}
}
extension ViewController: KeyboardNavigatorDelegate {
func keyboardNavigatorDidTapBack(_ navigator: KeyboardNavigator) {
// Your code here
}
func keyboardNavigatorDidTapNext(_ navigator: KeyboardNavigator) {
// Your code here
}
func keyboardNavigatorDidTapDone(_ navigator: KeyboardNavigator) {
// Your code here
}
}
创建一个 KeyboardNavigator
,传入您的文本输入并将 returnKeyNavigationEnabled
参数设置为 true
。文本字段的顺序决定了从一个文本输入到下一个文本输入的导航顺序。重要的是要注意,KeyboardToolbar
和键盘的“Return”键的使用不是互斥的。 您可以让 KeyboardNavigator
同时使用 KeyboardToolbar
和键盘的“Return”键。
class ViewController: UIViewController {
@IBOutlet private var textInput1: UITextField!
@IBOutlet private var textInput2: UITextField!
private var keyboardNavigator: KeyboardNavigator?
override func viewDidLoad() {
super.viewDidLoad()
keyboardNavigator = KeyboardNavigator(textInputs: [textInput1, textInput2], returnKeyNavigationEnabled: true)
}
}
创建一个 KeyboardToolbar
,根据需要配置后退/下一步/完成按钮。然后,创建一个 KeyboardAutoNavigator
,传入您的工具栏。文本输入的位置决定了从一个到下一个的导航顺序。可选地,实现 KeyboardAutoNavigatorDelegate
以在点击 KeyboardToolbar
中的“后退”、“下一步”和“完成”时接收回调。
class ViewController: UIViewController {
@IBOutlet private var textInput1: UITextField!
@IBOutlet private var textInput2: UITextView!
private var keyboardNavigator: KeyboardAutoNavigator?
override func viewDidLoad() {
super.viewDidLoad()
let keyboardToolbar = KeyboardToolbar(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: 44.0))
keyboardNavigator = KeyboardAutoNavigator(navigationContainer: scrollView, defaultToolbar: keyboardToolbar, returnKeyNavigationEnabled: true)
keyboardNavigator?.delegate = self
}
}
extension ViewController: KeyboardAutoNavigatorDelegate {
func keyboardAutoNavigatorDidTapBack(_ navigator: KeyboardAutoNavigator) {
// Your code here
}
func keyboardAutoNavigatorDidTapNext(_ navigator: KeyboardAutoNavigator) {
// Your code here
}
func keyboardAutoNavigatorDidTapDone(_ navigator: KeyboardAutoNavigator) {
// Your code here
}
}
要运行示例项目,请克隆 repo,并首先从 Example 目录运行 pod install
。
dependencies: [
.package(url: "https://github.com/BottleRocketStudios/iOS-KeyboardSupport.git", from: "2.1.1")
]
KeyboardSupport 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile
pod 'KeyboardSupport'
将以下内容添加到您的 Cartfile
github "BottleRocketStudios/iOS-KeyboardSupport"
运行 carthage update
并按照 Carthage README 中描述的步骤操作。
KeyboardSupport 在 Apache 2.0 许可证下可用。有关更多信息,请参阅 LICENSE.txt 文件。
请参阅 CONTRIBUTING 文档。 谢谢,贡献者!