【问题标题】:Notifications in UIView Controller not firingUIView 控制器中的通知未触发
【发布时间】:2016-10-11 17:24:01
【问题描述】:

昨天我的代码运行良好,从那以后我唯一更改的是将另一个表视图设置为根表视图并将其单元格中的一个 segue 放入此 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)
}

【问题讨论】:

  • 你为什么不追溯你昨天的工作……?
  • 我做了,它包含在问题中。
  • viewDidLoad 被调用了吗?

标签: ios swift view uiview keyboard


【解决方案1】:

事实证明,模拟器足够聪明,可以知道您什么时候使用它的键盘,什么时候不使用它。 Protip,在担心您的代码如何停止工作之前,请确保先在设备上进行尝试。

【讨论】:

  • 哦哈哈,好的。此外,⌘+K 隐藏/显示模拟器上的键盘。也可能有助于在模拟器上获得结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多