After the recent update of Xcode, this code that used to work no longer works. Most of the Selector(":") has an auto correction with the exception for this code:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
}
which flags an error:
No method declared with Objective C selector 'keyboardWillSHow:'
This image show different attempts which have all failed.
What is the new syntax for this code?
Assign the Selector
as below:
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(YourClassName.keyboardWillShow(_:)), name:UIKeyboardWillShowNotification, object: nil);
And the method to update what you want:
func keyboardWillShow(notification: NSNotification) {
//Update UI or Do Something
}
Same way you can do for UIKeyboardWillHideNotification
.
Swift 3 example:
NotificationCenter.default.addObserver(self, selector: #selector(YourClass.keyboardWillShow(notification:)), name:NSNotification.Name.UIKeyboardWillShow, object: nil);
NotificationCenter.default.addObserver(self, selector: #selector(YourClass.keyboardWillHide(notification:)), name:NSNotification.Name.UIKeyboardWillHide, object: nil);
// MARK: - Actions
@objc private func keyboardWillShow(notification: Notification) {
print("keyboardWillShow called")
}
@objc private func keyboardWillHide(notification: Notification) {
print("keyboardWillHide called")
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With