KeyboardResponder 0.1.5

KeyboardResponder 0.1.5

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2018年12月
SPM支持SPM

Vlad AlexaBen BaggleyJames ShawAnh Tran维护。



  • 距离

轻松在UITextFields和UITextViews之间导航。

特性

  • [x] 正确在多个UITextFieldUITextView之间导航,同时保持UIScrollView的内边距和偏移量
  • [x] 可定制的inputAccessoryView,带有默认的UIToolbar实现。
  • [x] 驱动TheDistanceForms的导航 - 一个用于创建灵活表单的iOS框架,表单作为用户输入元素的通用集合 - 即将推出。
  • [x] 完整文档

要求

  • iOS 8.0+
  • Xcode 7.3
  • Swift 2.2

安装

组件库

Keyboard Responder依赖于The Distance提供的其他库

请确保将这些库与KeyboardResponder一起添加到您的项目中。

使用

入门

KeyboardResponder设置非常简单。

  1. 初始化一个KeyboardResponder对象
  2. 设置scrollContainer以确保contentOffsetcontentInsets调整以保持视图在屏幕上。
  3. KeyboardResponder上设置inputAccessoryView - 当组件添加到键盘响应器时,此inputAccessoryView将被设置为。
  4. UITextFieldUITextView创建一个KeyboardResponderInputType的数组,并将其分配给components属性。
  5. 可选地匹配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框架,表单作为用户输入元素的通用集合——即将推出。

自定义

KeyboardResponderToolbarKeyboardResponderInputAccessoryView的默认实现。您可以创建任何可以提供符合该协议的任意UIView来代替。

为了响应任何 UITextFieldUITextView 代理方法以添加更多功能,您应该将您的代理分配到 KeyboardResponder 上的 textFieldDelegatetextViewDelegate 属性。

要自定义功能,例如在某些情况下阻止导航,您应该子类化 KeyboardResponder,并且记得调用 super

沟通