Keyboard
永远不再实现NSNotification.Name.UIKeyboardDidShow
。永远。
是的,真的很严重。在iOS上处理键盘不应该痛苦。但是它是。
所以最好不要做很多计算,或者将一切嵌入到UIScrollView
中,导入Keyboard
并继续享受生活。
规范
- iOS 9+
- Swift 4.2+
用法
第一步
使视图控制器符合KeyboardChangeHandler
协议
import Keyboard
class ViewController: UIViewController, KeyboardChangeHandler {
第2步
开始处理键盘通知
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
becomeKeyboardChangeHandler()
}
override func viewWillDisappear(_ animated: Bool) {
resignKeyboardChangeHandler()
super.viewWillDisappear(animated)
}
第3步
使用ctrl + 拖动到您喜欢的 NSLayoutConstraint
第4步
继续您的生活
额外功能
键盘
带有一些您可能会喜欢的附加功能
Keyboard
单例
Keyboard.default.isVisible //tells you if the keyboard is currently visible
Keyboard.default.currentFrame //tells you the keyboard's frame
- 关闭键盘处理
class ViewController: UIViewController {
override func awakeFromNib() {
super.awakeFromNib()
//do this if you have set up a bunch of outlets on Interface Builder
//but don't want Keyboard to work on this view controller for now
handlesKeyboard = false
}
}
- 键盘间距
override func viewDidLoad() {
super.viewDidLoad()
[...]
//adds a margin between the keyboard and the currently active text input
//defaults to 40.0
keyboardMargin = 60.0
}
- 查找当前活动的文本输入
self.view.currentFirstResponder
UIResponder.currentFirstResponder
备注
-
如果模拟器没有立即显示键盘,请按
cmd+K
。 -
您可能在控制台上看到以下消息(这些消息不会以任何方式影响库)
_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)
迁移
- 从v0.6.0开始:如果您是从版本0.6.0迁移的,请查看此内容。
安装
Cocoapods
pod 'Keyboard', '~> 1.1'
然后在需要的地方导入Keyboard
。
Carthage
github "BellAppLab/Keyboard" ~> 1.1
然后在需要的地方导入Keyboard
。
Swift Package Manager
dependencies: [
.package(url: "https://github.com/BellAppLab/Keyboard", from: "1.1")
]
然后在需要的地方导入Keyboard
。
Git Submodules
cd toYourProjectsFolder
git submodule add -b submodule --name Keyboard https://github.com/BellAppLab/Keyboard.git
然后将Keyboard
文件夹拖入你的Xcode项目。
作者
Bell App Lab,[email protected]
致谢
标志图像 由 Gregor Cresnar 来自 Noun Project
许可证
Keyboard遵循MIT许可证。有关更多信息,请参阅LICENSE文件。