Le code ci-dessous fonctionnait bien avant Swift 4.2:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
Lorsque je clique sur l'option 'Fix', cela devient:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.UIResponder.keyboardWillShowNotification, object: nil)
Mais il s'agit toujours d'une erreur. Voici l'explication:
Type 'NSNotification.Name' has no member 'UIResponder'
Et puis j'ai essayé de supprimer 'UIResponder':
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.
... mais je ne sais pas comment le compléter.
La forme correcte est:
UIResponder.keyboardWillShowNotification
... alors, votre code devient:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: UIResponder.keyboardWillShowNotification)
Il s'agit d'un problème connu avec Xcode 10. Le correctif automatique ne fonctionne pas correctement pour Swift 4.2 lorsqu'il s'agit de corriger les noms des notifications.
Dans Swift 4.2, beaucoup de Notification.Name
les instances sont devenues des variables d'instance dans d'autres classes. Par exemple, keyboardWillShowNotification
est maintenant une variable d'instance de UIResponder
.