Ios UIView控制器中的通知未触发
我昨天让这段代码运行得很好,从那以后我唯一做的改变就是将另一个表视图设置为根表视图,并将其单元格中的一个片段放到这个VC中,但现在它突然不工作了。非常感谢任何能帮忙的人Ios UIView控制器中的通知未触发,ios,swift,view,uiview,keyboard,Ios,Swift,View,Uiview,Keyboard,我昨天让这段代码运行得很好,从那以后我唯一做的改变就是将另一个表视图设置为根表视图,并将其单元格中的一个片段放到这个VC中,但现在它突然不工作了。非常感谢任何能帮忙的人 override func viewDidLoad() { super.viewDidLoad() NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UI
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: self.view.window)
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIKeyboardWillHideNotification, object: self.view.window)
}
func keyboardWillShow(sender: NSNotification) {
guard let userInfo: [NSObject: AnyObject] = sender.userInfo,
keyboardSize: CGSize = userInfo[UIKeyboardFrameBeginUserInfoKey]?.CGRectValue.size,
offset: CGSize = userInfo[UIKeyboardFrameEndUserInfoKey]?.CGRectValue.size else { return }
if keyboardSize.height == offset.height {
if self.view.frame.origin.y == 0 {
UIView.animateWithDuration(0.1, animations: { () -> Void in
self.view.frame.origin.y -= keyboardSize.height
})
}
} else {
UIView.animateWithDuration(0.1, animations: { () -> Void in
self.view.frame.origin.y += keyboardSize.height - offset.height
})
}
}
func keyboardWillHide(sender: NSNotification) {
guard let userInfo: [NSObject: AnyObject] = sender.userInfo,
keyboardSize: CGSize = userInfo[UIKeyboardFrameBeginUserInfoKey]?.CGRectValue.size else { return }
self.view.frame.origin.y += keyboardSize.height
}
override func viewWillDisappear(animated: Bool) {
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: self.view.window)
NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: self.view.window)
}
事实证明,模拟器足够聪明,可以知道你什么时候在使用它的键盘,什么时候不用。Protip,在对你的代码是如何停止工作感到不安之前,确保你先在一台设备上试用它。结果表明,模拟器足够聪明,可以知道你什么时候在使用它的键盘,而不是在使用它。Protip,在对你的代码如何停止工作感到震惊之前,请确保你先在设备上试用它。为什么不追溯到你昨天的工作成果…?我追溯了,它包含在问题中。
viewDidLoad
调用了吗?为什么不追溯到你昨天的工作成果…?我追溯了,它包含在问题中。viewDidLoad
被调用了吗?哦,哈哈,好的。也,⌘+K隐藏/显示模拟器上的键盘。也许在模拟器上得到结果也会有帮助。哦,哈哈,好的。也,⌘+K隐藏/显示模拟器上的键盘。也可能有助于在模拟器上获得结果。