Keyboard
永远 不要 实现 NSNotification.Name.UIKeyboardDidShow
。永远不要。
是的,认真地说。在iOS上处理键盘不应该痛苦。但实际上它确实是。
所以,代替进行大量计算或将所有东西嵌入到UIScrollView
中,导入 Keyboard
然后 继续你的生活。
规范
- iOS 9+
- Swift 4.2+
用法
步骤 1
使您的视图控制器符合 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.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 包管理器
dependencies: [
.package(url: "https://github.com/BellAppLab/Keyboard", from: "1.1")
]
然后,在需要的地方导入Keyboard
。
Git 子模块
cd toYourProjectsFolder
git submodule add -b submodule --name Keyboard https://github.com/BellAppLab/Keyboard.git
然后,将Keyboard
文件夹拖放到您的 Xcode 项目中。
作者
Bell App Lab, [email protected]
致谢
标志图像由 Gregor Cresnar 来自 名词项目
许可证
键盘可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。