Type 'NSNotification.Name' has no member 'keyboardDidShowNotification'
Solution 1
I believe you use it like this now.
NotificationCenter.default.addObserver(
self,
selector: #selector(self.keyboardDidShow(notification:)),
name: UIResponder.keyboardDidShowNotification, object: nil)
/* You can substitute UIResponder with any of it's subclass */
It is listed in UIResponder
doc as a Type Property.
Solution 2
Working on swift 4,2
func bindToKeyboard(){
NotificationCenter.default.addObserver(self, selector: #selector(UIView.keyboardWillChange(_:)), name:
UIApplication.keyboardWillChangeFrameNotification
, object: nil)
}
Solution 3
I have used just the UIResponder.keyboardWillHideNotification
except using NSNotification.Name.
. This is working in SWIFT 5
NotificationCenter.default.addObserver(self, selector: #selector(KeyboardLayoutConstraint.keyboardWillShowNotification(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHideNotification(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)
When I command-click on keyboardWillShowNotification and select jump to definition.
extension UIResponder {
public class let keyboardWillShowNotification: NSNotification.Name
public class let keyboardDidShowNotification: NSNotification.Name
public class let keyboardWillHideNotification: NSNotification.Name
public class let keyboardDidHideNotification: NSNotification.Name
}
Solution 4
Some small details added to this answer:
func setupViews(){
// Keyboard notification observers
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
}
@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
// Do something
}
}
@objc func keyboardWillHide(notification: NSNotification) {
// Do something
}
![Krunal](https://i.stack.imgur.com/mme83.jpg?s=256&g=1)
Krunal
Contact me, if you're looking for a CTO or Engineering Director/VP. contact: +91 - 9737007007 mail: [email protected] Following some great SO users....
Updated on July 29, 2022Comments
-
Krunal almost 2 years
I'm getting this error with Swift 4.2
Type 'NSNotification.Name' has no member 'keyboardDidShowNotification'
Here is my code:
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidShow(notification:)), name: NSNotification.Name.keyboardDidShowNotification, object: nil)
Following one was working fine with Swift 4 but not with Swift 4.2
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardDidShow(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
Apple document Ref: NSNotification.Name.keyboardDidShowNotification