Der folgende Code hat einwandfrei funktioniert, bevor Swift 4.2:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
Wenn ich auf die Option "Korrigieren" klicke, wird Folgendes angezeigt:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.UIResponder.keyboardWillShowNotification, object: nil)
Aber es ist immer noch ein Fehler markiert. Hier ist die Erklärung:
Type 'NSNotification.Name' has no member 'UIResponder'
Und dann habe ich versucht, "UIResponder" zu löschen:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.
... aber ich weiß nicht, wie ich es vervollständigen soll.
Die richtige Form ist:
UIResponder.keyboardWillShowNotification
... so wird Ihr Code:
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: UIResponder.keyboardWillShowNotification)
Dies ist ein bekanntes Problem mit Xcode 10. Automatische Korrektur - es funktioniert nicht richtig für Swift 4.2, wenn es um die Korrektur von Benachrichtigungsnamen geht.
In Swift 4.2, viele Notification.Name
Instanzen wurden zu Instanzvariablen in anderen Klassen. Beispielsweise ist keyboardWillShowNotification
jetzt eine Instanzvariable von UIResponder
.