测试测试通过 | ✗ |
言语言 | SwiftSwift |
许可证 | MIT |
发布最新发布 | 2017年10月 |
SwiftSwift版本 | 3.0 |
SPM支持SPM | ✗ |
由 Andrew Crookston 维护。
Swift iOS 键盘观察者,帮助您管理键盘通知,框架更改,并简化动画。
ACRKeyboardObserver 可以轻松处理 iOS 键盘状态变化,如 willShow
或 didHide
。它还提供了比原生回调更准确的键盘框架大小。这在以交互方式关闭键盘时特别有用。
使用 CocoaPods 进行安装。
platform :ios, '8.0'
use_frameworks!
pod 'ACRKeyboardObserver'
在 AppDelegate 中启动/停止观察者
class AppDelegate: UIResponder, UIApplicationDelegate {
…
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
ACRKeyboardObserver.observer.start()
return true
}
…
func applicationWillTerminate(application: UIApplication) {
ACRKeyboardObserver.observer.stop()
}
}
UIViewController 示例
keyboardChanged(status: KeyboardStatus)
。import UIKit
import ACRKeyboardObserver
class SomeKeyboardController: UIViewController, ACRKeyboardObserverDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// 1.
ACRKeyboardObserver.observer.addDelegate(self)
}
// 2.
func keyboardChanged(_ status: KeyboardStatus) {
// 3.1.
if let animation = status.animation {
UIView.animate(withDuration: animation.duration, delay: 0, options: animation.option, animations: { () -> Void in
self.updateFrameFromKeyboard(top: animation.top)
}, completion: nil)
} else if let frame = status.frame {
// 3.2.
updateFrameFromKeyboard(top: frame.origin.y)
}
}
func updateFrameFromKeyboard(top: CGFloat) {
// update some views
}
}
我会扩展文档,但代码相当简单,应该很容易阅读。
如果您允许用户以交互方式删除键盘,例如
textView.keyboardDismissMode = .interactive
当用户开始拖动以删除时,您将收到 status.state == .frameChanged
通知。当拖动完成并且键盘实际上被关闭时,您还将收到 .WillHide
和 .DidHide
调用。这些调用,一如既往,包括键盘框架,但它没有报告实际的框架/原点。我还没有决定如何处理这个问题,但倾向于不相信 iOS 关于键盘大小的报告,而是找出实际的键盘框架。
一种解决方案是查看您的视图,如果它们处于“键盘已隐藏”状态,请忽略 .willHide
和 .didHide
调用。
MIT
我乐意包含任何改进。目前没有测试或演示应用程序,所以我必须手动测试任何贡献,但请不要因此停止。这些项目可能是一个帮助的好地方。;)
我没有进行广泛的错误测试,但基本功能在我的应用程序中正常工作。如果您发现什么问题,请发布一个bug并我会查看它。我通常能快速做出回应。
我喜欢听我的东西正常工作(或不正常)时的声音,所以如果觉得这个库有帮助,请告知我。在我的推特上找到我@acr,或者在这里的GitHub上联系我。
祝您使用愉快!