【发布时间】:2018-09-18 07:18:33
【问题描述】:
我试图在使用键盘显示时将我的文本字段向上移动,而当键盘隐藏时它又会向下移动。所以我在那里使用NotificationCenter.default.addObserver,但这只有在充电时才能正常工作,当我从充电器中取出时它不起作用,即它不会移动可能出现的情况。请帮我解决这个问题。提前致谢
下面是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y != 0{
self.view.frame.origin.y -= 50
}
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y != 0{
self.view.frame.origin.y += 50
}
}
}
【问题讨论】:
-
“当我从充电器中取出时它不工作” - 会发生什么?不动?移动错误的金额?崩溃?还有什么?
-
它不动@AshleyMills
-
@Ashishyadav 你的键盘显示了吗?
-
是的键盘显示@RakeshaShastri
-
这是迄今为止我在 SO 上看到的最奇怪的问题。 :'D 另外你应该使用
UIKeyboardFrameEndUserInfoKey而不是UIKeyboardFrameBeginUserInfoKey。在 Swift 4.2 中,通知发生了变化。 stackoverflow.com/a/52325564/7734643