SimpleKeyboard 1.0.2

SimpleKeyboard 1.0.2

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2018年7月
SwiftSwift 版本3.0
SPM支持 SPM

Cristian Sava维护。



  • Cristian Sava

SimpleKeyboard

Swift Version License Platform

SimpleKeyboard解决了iOS平台上常见的问题:当键盘显示时,下面的输入字段可能不再可见。由于没有简单或内置的通用解决方案,SimpleKeyboard试图提供这正正是用户所需的功能。

SimpleKeyboard之所以简单,在于它可以在每个View Controller中工作,而不需要UIScrollView,AutoLayout,底部约束或其他任何其他解决方案中存在的其他东西。

示例

要运行示例项目,首先从仓库克隆,然后从Example目录运行pod install

使用UIScrollView

ScrollView

有底部约束的登录屏幕

Login

包含UITextField的cell的TableView

TableView

用法

SimpleKeyboard的设计旨在提供灵活性,这就是为什么有三种方式可以使用它的原因

  • 自动:从您的ViewController中删除所有代理/键盘代码。您只需指定或配置IBOutlets即可。
  • 手动:您对所有UITextField/UITextView在ViewController中的控制权。键盘仍然表现良好,但您需要通知SimpleKeyboard当前输入控件。
  • 组合:SimpleKeyboard将为您管理一些输入控件,而其余的则留给您处理。

创建

首先,在视图控制器中导入 SimpleKeyboard,并声明一个新变量

var simpleKeyboard: SimpleKeyboard!

现在在 onViewDidLoad 下创建键盘对象

override func viewDidLoad() {
    super.viewDidLoad()
        
    simpleKeyboard = SimpleKeyboard.createKeyboard(forControls: [firstTextField, secondTextField,
                                                                 firstTextView, thirdTextField],
                                                   fromViewController: self)
}

如果特定的控件(在 UITextView 或数字键盘上)需要键盘工具栏,可以使用 add 函数让 SimpleKeyboard 为您管理

simpleKeyboard.add(control: specificTextView, withDoneButtonKeyboard: true)
// Use selector when wanting to process pressing Done button
simpleKeyboard.add(control: lastVisibleTextField, withDoneButtonKeyboard: true, 
                   doneTarget: self, doneSelector: #selector(donePressed(_:)))

如果您只想让 SimpleKeyboard 正确处理键盘的显示和隐藏,而不需要管理其他操作,那么只需实例化而不绑定任何控件即可

simpleKeyboard = SimpleKeyboard(fromViewController: self)

启用/禁用

重写 viewDidAppear 和 viewDidDisappear 以开始和停止使用 SimpleKeyboard

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
        
    simpleKeyboard.enable()
}
    
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
        
    simpleKeyboard.disable()
}

但是,当按下 Return 键时,我希望键盘消失

对于这个功能,您不需要委托。SimpleKeyboard 通过使用回调来优雅地实现,用于捕捉不同的事件。只需设置回调如下

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
        
    simpleKeyboard.enable()
            
    simpleKeyboard.textFieldShouldReturn = { textField in
        textField.resignFirstResponder()
                
        return true
    }
}

请注意,这只会为 SimpleKeyboard 管理的控件工作。所有其他控件需在视图控制器中使用委托处理。

嵌套

考虑一下这样的情况:视图控制器管理着不同的视图和一个 UITableView,每个 cell 中也都有不同的输入控件?源文件中包含了不同的 outlets,这些 outlets 应该放在哪里呢?

这很简单

  • 创建键盘(带或不带特定控件)并启用它
  • 实现用于开始和结束使用键盘的代理函数
  • 在这些代理函数内部,通知 SimpleKeyboard 当前接收和失去焦点的视图。
simpleKeyboard.setActive(view: view)

simpleKeyboard.clearActiveView()

失去焦点。

关于更多详细信息,请查看示例 App 中的 NoControlsViewController.swift。

注意事项

  • 始终在使用键盘后将其禁用。未进行此操作很可能会导致崩溃。
  • 不要为SimpleKeyboard正在处理的控件设置委托。根据代码流,这可能会导致SimpleKeyboard的好处失效。如果您需要自己处理特定的UITextField/UITextView,请相应地使用setActive和clearActiveView函数。

要求

  • Swift 4.1
  • iOS 10.0 +
  • XCode 9.4+

安装

CocoaPods

SimpleKeyboard可以通过CocoaPods获得。要安装它,只需将以下行添加到您的Podfile中

pod 'SimpleKeyboard'

pod 'SimpleKeyboard', '~> 1.0.2'

手动

只需将SimpleKeyboard.swift复制到您的项目中即可。

作者

Cristian Sava, [email protected]

许可

SimpleKeyboard可以在MIT许可下使用。有关更多信息,请参阅LICENSE文件。