Typist 1.4.2

Typist 1.4.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2019年4月
SPM支持SPM

Toto Tvalavadze维护。



Typist 1.4.2

Typist

Swift Version Platform CocoaPods Compatible Carthage compatible Twitter

Typist是一个小巧的iOS应用程序UI键盘管理器,用Swift编写。它帮助您管理键盘屏幕的存在和行为,无需通知中心和使用Objective-C。


用法

声明在特定事件发生时应发生什么,并开始监听键盘事件。就是这样。

let keyboard = Typist.shared // use `Typist()` whenever you can, see note on singleton usage below

func configureKeyboard() {

    keyboard
        .on(event: .didShow) { (options) in
            print("New Keyboard Frame is \(options.endFrame).")
        }
        .on(event: .didHide) { (options) in
            print("It took \(options.animationDuration) seconds to animate keyboard out.")
        }
        .start()

}

您必须调用start()才能触发回调。在实例上调用stop()将停止触发回调,但回调本身不会被取消,因此您可以通过再次调用start()来恢复事件回调。

要删除所有事件回调,请调用clear()

交互性和inputAccessoryView

使用Typist与UIScrollView实例一起使用时,您可以交互式地关闭键盘。

let keyboard = Typist()

func configureKeyboard() {

    keyboard
        .toolbar(scrollView: tableView) // Enables interactive dismissal
        .on(event: .willChangeFrame) { (options) in
            // You are responsible animating inputAccessoryView
        }
        .on(event: .willHide)  { (options) in
            // Triggered when keyboard is dismissed non-interactively.
        }
        .start()

}

.on(event: .willChangeFrame, do: {...})将根据键盘框架的变化频率更新,因为它是由于UIScrollView滚动而变化的。实施.willHide部分也是一个好习惯,因为键盘可能以非交互方式关闭,例如,使用resignFirstResponder()

上面的示例已在演示应用程序中实现

单例使用

shared 单例用于方便地访问实例,通常认为这种方式是可行的。然而,强烈建议为每个使用场景(在大多数情况下是 UIViewController)实例化专门的 Typist()。**当有两个或更多使用 Typist.shared 的对象同时在屏幕上时,不要使用单例**,因为这会导致某个控制器无法接收到键盘事件。

事件回调选项

每个事件回调都有一个 Typist.KeyboardOptions 类型的参数。它是一个不可变的 struct,承载了键盘在事件发生时的所有数据

  • belongsToCurrentApp — 一个表示键盘是否属于当前应用的 Bool 类型。在 iPad 的多任务处理中,当键盘出现和消失时,所有可见的应用都会收到通知。对于导致键盘出现的应用,值为 true,对于任何其他应用,值为 false
  • startFrame — 一个标识键盘在屏幕坐标中的起始框架的 CGRect。这些坐标未考虑由于界面方向变化而应用于视图内容的任何旋转因素。因此,在使用之前可能需要将矩形转换为视图坐标(使用 convert(CGRect, from: UIView?) 方法)。
  • endFrame — 一个标识键盘在屏幕坐标中的结束框架的 CGRect。这些坐标未考虑由于界面方向变化而应用于视图内容的任何旋转因素。因此,在使用之前可能需要将矩形转换为视图坐标(使用 convert(CGRect, from: UIView?) 方法)。
  • animationCurve — 定义键盘将如何动画呈现到或从屏幕消失的 UIView.AnimationCurve 常量。
  • animationDuration — 表示动画持续时间的 Double
  • animationOptions — 将 animationCurve 映射到相应的 UIView.AnimationOptions 值的辅助属性。在执行视图动画时(使用 UIView.animate(...)时很有用。

事件

以下是支持的键盘事件

  • willShow
  • didShow
  • willHide
  • didHide
  • willChangeFrame
  • didChangeFrame – 例如,当键盘因为滚动视图交互而动态消失时。

如果在同一个事件上声明了两个闭包,只有后一个将被执行。


安装

CocoaPods

您可以使用CocoaPods通过将其添加到您的Podfile中来安装Typist

platform :ios, '8.0'
use_frameworks!
pod 'Typist'

在您计划监听键盘事件的地方导入Typist。通常在您的UIViewController子类中。

import UIKit
import Typist

Carthage

创建一个包含框架的Cartfile并运行carthage update。按照说明$(SRCROOT)/Carthage/Build/iOS/Typist.framework添加到iOS项目中。

github "totocaster/Typist"

手动

下载并将Typist.swift拖放到您的项目中。


感谢Jake Marsh在《Little Bites of Cocoa》特色介绍Typist,我的生活真是太美好了 [#282: Taming the Keyboard with Typist ⌨️


许可

Typist是在MIT许可下发布的。有关详细信息,请参阅LICENSE文件。