Swift 3 NSNotificationCenter Keyboardwillshow/ausblenden
Ich habe ein Stück code, arbeitete in Swift 2 und ich habe versucht, mit Xcode zu aktualisieren Sie den code auf die neueste version und ich fest alles ausser zwei Fragen.
Habe ich diesen code :
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)
Dass Paare zusammen mit diesem:
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()
}
}
Auf den ersten Teil bekomme ich jetzt eine Fehlermeldung
Typ 'LoginViewController' has no member 'keyboardWillShow ein - /Ausblenden'
Ich verstehe nicht, warum es nicht sehen, die Methode unter.
Weiß jemand eine Lösung für dieses Problem?
- hast u fügen Sie das NotificationCenter im inneren viewDidLoad() oder viewDidAppear () - Methode?
- Ändern
LoginViewController.keyboardWillShow(_:)
zuLoginViewController.keyboardWillShow(notification:)
? - Probiert, xCode möchte ich die _ wieder in
- Sind Sie mit dem hinzufügen der NotificationCenter Beobachter in der
LoginViewController
Klasse? Sind beide Funktionen in dieser Klasse zu? Haben Sie versucht#selector(keyboardWillShow())
? - die funcs sind in der selben Klasse und ich habe gerade versucht, die. Die Benachrichtigung der Beobachter in der viewDidLoad
- Versuchen
func keyboardWillHide(_ notification: NSNotification) {
und#selector(LoginViewController.keyboardWillHide(_:))
. Beachten Sie die zusätzlichen Unterstrich in der keyboardWillHide Funktion. - check out aktualisierte Swift-Programmierung Buch. Seite 1027 und 1028 sind wahrscheinlich das, was Sie suchen, könnten Sie auch haben, um eine
@objc(keyboardWillHideWithNotification:)
zu Ihrer Klasse. - durch die Kombination dieser beiden Kommentare xCode mir erlaubt, klicken Sie auf Bearbeiten und jetzt jammert nicht mehr...danke
- wenn Sie wollen, um es als eine Antwort kann ich markieren Sie es richtig
- Nur gepostet meine Antwort! Ich bin froh, geholfen zu haben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überprüfen Sie heraus den aktualisierten Swift Programming Language book. Seiten 1027 und 1028 sind, was Sie suchen. Es sollte so etwas wie dieses:
Beachten Sie die zusätzlichen Unterstrich oben. Auch:
Könnten Sie auch hinzufügen müssen
@objc(keyboardWillHideWithNotification:)
zu Ihrer Klasse.Auf Swift-4.2, addObserver Namen für NSNotificationCenter geändert:
Verwenden, dass der code, der die Arbeit auf swift3
Können Sie Ihren ViewController (e.g
loginvc
) hinzufügen BenachrichtigungFügen Sie dann die Tastatur aus-und einblenden Methode
NSNotificationCenter haben sich die Dinge ändern, für Holen Sie show-Tastatur: