小编典典

Swift 3 NSNotificationCenter键盘将显示/隐藏

swift

我有一段可以在Swift 2中使用的代码,我尝试使用Xcode将代码更新为最新版本,并修复了除两个问题以外的所有内容。

我有这个代码:

let loginvc: LoginVC = self.storyboard?.instantiateViewController(withIdentifier: "LoginVC") as! LoginVC
NotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
NotificationCenter.defaultCenter().addObserver(self, selector: #selector(LoginViewController.keyboardWillHide(_:)), name: UIKeyboardWillHideNotification, object: nil)

与此配对:

func keyboardWillShow(notification: NSNotification) {

    constraint.constant = -100
    UIView.animate(withDuration: 0.3) {
        self.view.layoutIfNeeded()
    }
}

func keyboardWillHide(notification: NSNotification) {

    constraint.constant = 25
    UIView.animate(withDuration: 0.3) {
        self.view.layoutIfNeeded()
    }
}

在第一部分,我现在得到一个错误提示

类型“ LoginViewController”没有成员“ keyboardWillShow / Hide”

我不明白为什么它没有看到下面的方法。

有人知道这个问题的解决方案吗?


阅读 254

收藏
2020-07-07

共1个答案

小编典典

查阅更新的《Swift编程语言》书。您正在寻找1027和1028页。应该是这样的:

func keyboardWillHide(_ notification: NSNotification) {…

请注意上面的其他下划线。也:

#selector(LoginViewController.keyboardWillHide(_:))

您可能还需要添加@objc(keyboardWillHideWithNotification:)到课程中。

2020-07-07