Rub*_*444 10 nsnotificationcenter ios swift swift3
我有一段代码在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)
Run Code Online (Sandbox Code Playgroud)
与此配对
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()
}
}
Run Code Online (Sandbox Code Playgroud)
在第一部分我现在得到一个错误说"类型'LoginViewController'没有成员'keyboardwillshow/hide'
我不明白为什么它没有看到下面的方法
有人知道这个问题的解决方案吗?
查看更新的Swift Programming Language一书.第1027和1028页是您正在寻找的.它应该是这样的:
func keyboardWillHide(_ notification: NSNotification) {…
Run Code Online (Sandbox Code Playgroud)
请注意上面的附加下划线.也:
#selector(LoginViewController.keyboardWillHide(_:))
Run Code Online (Sandbox Code Playgroud)
您可能还需要添加@objc(keyboardWillHideWithNotification:)
到您的班级.
在Swift 4.2上,NSNotificationCenter的addObserver名称也已更改:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: UIResponder.keyboardDidShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: UIResponder.keyboardDidHideNotification, object: nil)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22697 次 |
最近记录: |