SBKeyboardEvents
SBKeyboardEvents 可以让您轻松响应用户键盘事件,无需在每个视图控制器中编写相同的样板代码。再也不需要在 viewDidLoad 方法中订阅如此多个通知了!
示例
要运行示例项目,请先克隆仓库,然后从 Example 目录运行 pod install
。
安装
SBKeyboardEvents 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 即可
pod "SBKeyboardEvents"
用法
您的 ViewController(或其他类,如果愿意的话),应实现 'KeyboardEventListener' 协议。然后应使用 SBKeyboardEvents
单例进行键盘事件的注册。
######(存在取消订阅监听器的方法,但在类释放时这些方法会自动处理,因此在实践中,这些方法很少需要。订阅并忘记是安全的。SBKeyboardEvents 保留对监听器的弱引用,因此不会保留它们)
override func viewDidLoad() {
super.viewDidLoad()
SBKeyboardEvents.addListener(self)
}
对于最简单的实现,您只需要实现一个方法,《code>animateForKeyboardHeight(height:)
此方法在键盘显示/消失动画块内被调用,因此调整约束/框架,其余都将自动处理。注意,这里的的高度是从屏幕底部到键盘的高度。
extension GameSetupViewController: KeyboardEventListener {
func animateForKeyboardHeight(_ height: CGFloat) {
keyboardPaddingConstraint.constant = height;
view.setNeedsLayout()
view.layoutIfNeeded()
}
}
这是完整的协议声明
public protocol KeyboardEventListener : class {
func keyboardWillAppear()
func keyboardDidAppear()
func keyboardWillHide()
func keyboardDidHide()
func keyboardWillChangeFrame(_ frame: CGRect)
func keyboardDidChangeFrame(_ frame: CGRect)
func animateForKeyboardFrame(_ frame: CGRect)
func animateForKeyboardHeight(_ height: CGFloat)
}
包含 'will' 的函数会在动画之前发生。
包含 'did' 的函数会在动画之后发生。
以 'animate' 开头的函数会在键盘动画块内被调用
作者
Steve Barnegren,[email protected]
许可证
SBKeyboardEvents 可在 MIT 许可证下使用。有关更多信息,请参阅 LICENSE 文件。