我知道这个问题已经问过好几次了,但我正在寻找一个使用 Swift 3.0 的实现。需要明确的是,我有一个文本视图,而不是文本字段。
我尝试做这样的事情......
在
viewDidLoad()
:
NotificationCenter.default.addObserver(self, selector: Selector(("keyboardWillShow")), name:NSNotification.Name.UIKeyboardWillShow, object: nil);
NotificationCenter.default.addObserver(self, selector: Selector(("keyboardWillHide")), name:NSNotification.Name.UIKeyboardWillHide, object: nil);
然后我在 ViewController 中创建了这些方法:
func keyboardWillShow(sender: NSNotification) {
self.view.frame.origin.y = -150
}
func keyboardWillHide(sender: NSNotification) {
self.view.frame.origin.y = 0
}
选择文本视图时发生崩溃。
您需要修改添加观察者代码,如下所述。 根据 Swift 3 迁移指南,这是声明通知添加观察者应遵循的新方法。
代码:
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
我已经用文本视图和通知中心的演示代码检查了这一点。
使用 https://github.com/hackiftekhar/IQKeyboardManager 并且不用关心键盘问题。如果您仍然想实现textview的默认行为,请指定崩溃。