Durch Klicken in ein Textfeld wird die Tastatur angezeigt. Wie verstecke ich es, wenn der Benutzer die Eingabetaste drückt?
Durch Klicken in ein Textfeld wird die Tastatur angezeigt. Wie verstecke ich es, wenn der Benutzer die Eingabetaste drückt?
Antworten:
Machen Sie zuerst Ihren Dateidelegierten für UITextField
@interface MYLoginViewController () <UITextFieldDelegate>
@end
Fügen Sie diese Methode dann Ihrem Code hinzu.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Fügen Sie auch hinzu self.textField.delegate = self;
In viewDidLoad
erklären:
[yourTextField setDelegate:self];
Fügen Sie dann die Überschreibung der Delegatenmethode hinzu:
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
setDelegate:
Erinnerung. Auf jeden Fall vergessen und Code funktionierte vorher nicht.
Versuchen Sie dies in Swift ,
Schritt 1: Legen Sie den Delegaten als Selbst für Ihren festtextField
textField.delegate = self
Schritt 2: Fügen Sie dieses UITextFieldDelegate unter Ihrer Klassendeklaration hinzu.
extension YourClassName: UITextFieldDelegate {
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
Machen Sie in Kürze Folgendes:
Zuerst in Ihrem ViewController
Gerät wird dies UITextFieldDelegate
z.
class MyViewController: UIViewController, UITextFieldDelegate {
....
}
Fügen Sie nun einen Delegaten zu einem hinzu, TextField
in dem Sie die Tastatur schließen möchten, wenn die Eingabetaste entweder in der folgenden viewDidLoad
Methode oder dort, wo Sie sie initialisieren, getippt wird. Zum Beispiel.
override func viewDidLoad() {
super.viewDidLoad()
myTextField.delegate = self
}
Fügen Sie nun diese Methode hinzu.
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
Versuche dies,
[textField setDelegate: self];
Dann in der textField-Delegatmethode
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
Setzen Sie den Delegaten der Methode UITextField
und überschreiben Sie textFieldShouldReturn
diese Methode. Schreiben Sie in dieser Methode einfach die folgenden zwei Zeilen:
[textField resignFirstResponder];
return YES;
das ist es. Vergessen Sie vor dem Schreiben eines Codes nicht, den Delegaten von a festzulegen UITextField
und den Return-Schlüsseltyp im Eigenschaftenfenster auf "Fertig" zu setzen (Befehl + Umschalt + I).
Sie können "Primary Action Triggered" (Rechtsklick auf UITextField) mit einer IBAction verbinden und den Ersthelfer (ohne Delegierung) zurücktreten. Beispiel (Swift 4):
@IBAction func textFieldPrimaryAction(_ sender: UITextField) {
sender.resignFirstResponder()
...
}
Legen Sie den Delegaten des UITextField
In-View-Controllers fest field.delegate = self
und dann:
extension ViewController: UITextFieldDelegate {
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// don't force `endEditing` if you want to be asked for resigning
// also return real flow value, not strict, like: true / false
return textField.endEditing(false)
}
}
Wenn Sie die Tastatur für eine bestimmte Tastatur [self.view resignFirstResponder];
ausblenden möchten, verwenden
Sie Wenn Sie eine Tastatur aus der Ansichtsausblendung ausblenden möchten[self.view endEditing:true];
Ok, ich denke für einen Anfänger könnten die Dinge etwas verwirrend sein. Ich denke, die richtige Antwort ist eine Mischung aus all dem, zumindest in Swift4.
Erstellen Sie entweder eine Erweiterung oder verwenden Sie den ViewController, in dem Sie diese verwenden möchten, stellen Sie jedoch sicher, dass Sie UITextFieldDelegate implementieren. Aus Gründen der Wiederverwendbarkeit fand ich es einfacher, eine Erweiterung zu verwenden:
extension UIViewController : UITextFieldDelegate {
...
}
aber die Alternative funktioniert auch:
class MyViewController: UIViewController {
...
}
Fügen Sie die Methode textFieldShouldReturn hinzu (abhängig von Ihrer vorherigen Option, entweder in der Erweiterung oder in Ihrem ViewController).
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
return textField.endEditing(false)
}
Setzen Sie in Ihrer viewDidLoad-Methode den Delegaten des Textfelds auf self
@IBOutlet weak var myTextField: UITextField!
...
override func viewDidLoad() {
..
myTextField.delegte = self;
..
}
Das sollte alles sein. Wenn Sie jetzt drücken return
die textFieldShouldReturn
aufgerufen werden soll.
Definieren Sie diese Klasse und stellen Sie dann Ihr Textfeld so ein, dass die Klasse verwendet wird. Dadurch wird die gesamte ausgeblendete Tastatur automatisiert, wenn die Eingabetaste automatisch gedrückt wird.
class TextFieldWithReturn: UITextField, UITextFieldDelegate
{
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
self.delegate = self
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField.resignFirstResponder()
return true
}
}
Dann müssen Sie im Storyboard nur noch die Felder festlegen, um die Klasse zu verwenden: