测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2018年12月 |
SPM支持SPM | ✗ |
由Vlad Alexa,Ben Baggley,James Shaw,Anh Tran维护。
轻松在UITextFields和UITextViews之间导航。
UITextField
和UITextView
之间导航,同时保持UIScrollView
的内边距和偏移量inputAccessoryView
,带有默认的UIToolbar
实现。Keyboard Responder依赖于The Distance提供的其他库
请确保将这些库与KeyboardResponder
一起添加到您的项目中。
KeyboardResponder设置非常简单。
KeyboardResponder
对象scrollContainer
以确保contentOffset
和contentInsets
调整以保持视图在屏幕上。KeyboardResponder
上设置inputAccessoryView
- 当组件添加到键盘响应器时,此inputAccessoryView
将被设置为。UITextField
和UITextView
创建一个KeyboardResponderInputType
的数组,并将其分配给components
属性。textView
的高度,使其正好适合其内容。这就完成了!当您的任何字段成为第一个响应者时,它们将显示您的inputAccessoryView
,并且您可以在它们之间进行导航,同时保持一致的滚动偏移量。
class ViewController: UIViewController {
@IBOutlet weak var titleField:UITextField?
@IBOutlet weak var nameField:UITextField?
@IBOutlet weak var emailField:UITextField?
@IBOutlet weak var textView:UITextView?
@IBOutlet weak var scrollView:UIScrollView?
var responder:KeyboardResponder!
override func viewDidLoad() {
super.viewDidLoad()
// 1.
responder = KeyboardResponder()
// 2.
responder.scrollContainer = scrollView
// 3.
responder.inputAccessoryView = KeyboardResponderToolbar(navigationDelegate: responder)
// 4.
if let tf = titleField, tv = textView, ef = emailField, nf = nameField {
responder.components = [.TextField(tf), .TextField(nf), .TextView(tv), .TextField(ef)]
}
// 5.
textView?.textContainer.heightTracksTextView
}
}
为了创建用户输入表单更加简单,我们开发了TheDistanceForms——一个用于创建灵活表单的iOS框架,表单作为用户输入元素的通用集合——即将推出。
KeyboardResponderToolbar
是KeyboardResponderInputAccessoryView
的默认实现。您可以创建任何可以提供符合该协议的任意UIView
来代替。
为了响应任何 UITextField
或 UITextView
代理方法以添加更多功能,您应该将您的代理分配到 KeyboardResponder
上的 textFieldDelegate
或 textViewDelegate
属性。
要自定义功能,例如在某些情况下阻止导航,您应该子类化 KeyboardResponder
,并且记得调用 super
。