Wie kann ich erkennen, wann die Tastatur in meiner Anwendung angezeigt und ausgeblendet wird?
ios
iphone
iphone-sdk-3.0
user198725878
quelle
quelle
Antworten:
In der ViewDidLoad-Methode Ihrer Klasse können Sie Nachrichten über die Tastatur abhören:
Dann können Sie in den von Ihnen angegebenen Methoden (in diesem Fall
keyboardDidShow
undkeyboardDidHide
) etwas dagegen tun:quelle
UITextFieldDelegat
e und implementieren Sie dietextFieldShouldReturn:
Methode. Sie erhalten dastextField
gerade eingegebene Argument, das Sie mit Ihren eigenen Textfeldern vergleichen und durch das Bild scrollen können,scrollView
sodass das entsprechende Textfeld angezeigt wird.Möglicherweise brauchen Sie nur
addObserver
inviewDidLoad
. Aber mitaddObserver
inviewWillAppear
undremoveObserver
inviewWillDisappear
verhindern seltene Abstürze , die passieren , wenn Sie die Ansicht verändern.Swift 4.2
Swift 3 und 4
Älterer Swift
quelle
deinit
wie folgt zu entfernen :deinit { NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: nil) NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: nil) }
deinit { NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil) NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil) }
Swift 3:
quelle
Swift 4:
Als nächstes fügen Sie eine Methode hinzu, um das Abhören von Benachrichtigungen zu beenden, wenn die Lebensdauer des Objekts endet: -
quelle
+=
scheint die Einsätze immer größer zu machen.UIResponder.keyboardWillShowNotification
undUIResponder.keyboardWillHideNotification
, und die Tastaturinfo-Taste lautetUIResponder.keyboardFrameBeginUserInfoKey
.Schnell - 4
quelle
Schauen Sie sich die Verwaltung der Tastatur Abschnitt der „Text, Web und Bearbeiten von Programmierhandbuch“ für Informationen über die Verfolgung der Tastatur angezeigt oder ausgeblendet wird, und wie zur Anzeige / abzuweisen manuell.
quelle
Sie möchten sich für die 2 Tastaturbenachrichtigungen registrieren:
Großartiger Beitrag zum Anpassen Ihres TextField an die Tastatur - http://iosdevelopertips.com/user-interface/adjust-textfield-hidden-by-keyboard.html
quelle
In Swift 4.2 wurden die Benachrichtigungsnamen in einen anderen Namespace verschoben. So, jetzt ist es
quelle
Swift 5
Die obigen Antworten sind richtig. Obwohl ich es vorziehen würde, einen Helfer zu erstellen, um das zu erledigen
notification's observers
.Der Vorteil:
Beispielcode:
Wie benutzt man:
}}
quelle
Swift 4 -
dd 20 october 2017
quelle
Wenn Sie mehr als eine haben
UITextField
und etwas tun müssen, wenn (oder vorher) die Tastatur erscheint oder verschwindet, können Sie diesen Ansatz implementieren.Fügen Sie
UITextFieldDelegate
Ihrer Klasse hinzu. Weisen Sie einen ganzzahligen Zähler zu, sagen wir:Setzen Sie diesen Zähler irgendwo in auf Null
viewDidLoad
. ImplementierentextFieldShouldBeginEditing
undtextFieldShouldEndEditing
delegieren Sie dann Methoden.Im ersten addiere 1 zu editCounter. Wenn der Wert von editCounter 1 wird, bedeutet dies, dass die Tastatur angezeigt wird (falls Sie JA zurückgeben). Wenn editCounter> 1 - bedeutet dies, dass die Tastatur bereits sichtbar ist und ein anderes UITextField den Fokus behält.
In
textFieldShouldEndEditing
subtrahieren Sie 1 von editCounter. Wenn Sie Null erhalten, wird die Tastatur geschlossen, andernfalls bleibt sie auf dem Bildschirm.quelle
Sie können die KBKeyboardObserver- Bibliothek verwenden. Es enthält einige Beispiele und bietet eine einfache Oberfläche.
quelle
Es gibt einen CocoaPods, der die Beobachtung
NSNotificationCentr
der Sichtbarkeit der Tastatur erleichtert : https://github.com/levantAJ/Keyhipod 'Keyhi'
quelle
Also ah, das ist jetzt die wahre Antwort.
quelle