Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIView控制器中的通知未触发_Ios_Swift_View_Uiview_Keyboard - Fatal编程技术网

Ios UIView控制器中的通知未触发

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

我昨天让这段代码运行得很好,从那以后我唯一做的改变就是将另一个表视图设置为根表视图,并将其单元格中的一个片段放到这个VC中,但现在它突然不工作了。非常感谢任何能帮忙的人

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隐藏/显示模拟器上的键盘。也可能有助于在模拟器上获得结果。