Ich habe ein UITextField
programmgesteuertes UITextField
Erstellen der Eigenschaft a des viewController erstellt. Ich muss die Tastatur mit der Rückkehr und der Berührung auf dem Bildschirm schließen. Ich konnte den Bildschirm berühren lassen, aber das Drücken der Eingabetaste funktioniert nicht.
Ich habe gesehen, wie man es mit Storyboards macht und indem man das UITextField
Objekt direkt zuweist und initialisiert, ohne es als Eigenschaft zu erstellen. Möglich zu tun?
.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITextFieldDelegate>
@property (strong, atomic) UITextField *username;
@end
.m
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.view.backgroundColor = [UIColor blueColor];
self.username = [[UITextField alloc] initWithFrame:CGRectMake(100, 25, 80, 20)];
self.username.placeholder = @"Enter your username";
self.username.backgroundColor = [UIColor whiteColor];
self.username.borderStyle = UITextBorderStyleRoundedRect;
if (self.username.placeholder != nil) {
self.username.clearsOnBeginEditing = NO;
}
_username.delegate = self;
[self.view addSubview:self.username];
[_username resignFirstResponder];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesBegan:withEvent:");
[self.view endEditing:YES];
[super touchesBegan:touches withEvent:event];
}
@end
ios
keyboard
uitextfield
noobsmcgoobs
quelle
quelle
Antworten:
Die einfache Möglichkeit besteht darin, den Delegaten von
UITextField
mit self (self.mytestField.delegate = self
) zu verbinden und die Tastatur in der MethodetextFieldShouldReturn
mit zu schließen[textField resignFirstResponder];
Eine andere Möglichkeit, die Tastatur zu schließen, ist die folgende:
Legen
[self.view endEditing:YES];
Sie fest, wo Sie die Tastatur schließen möchten (Button-Ereignis, Touch-Ereignis usw.).quelle
Fügen Sie eine Delegate-Methode
UITextField
wie folgt hinzu:Und stellen Sie
textField.delegate = self;
dann auch zwei Delegatenmethoden von einUITextField
quelle
@interface MyController : UIViewController <UITextFieldDelegate>
// KeyBoard ausblenden, indem Sie den Hintergrund in der Ansicht berühren
quelle
Verwenden Sie dies einfach schnell, um die Tastatur zu schließen:
Swift 3
quelle
UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
SWIFT 4:
oder
Stellen Sie den Delegaten des Textfelds auf den aktuellen Ansichtscontroller ein und dann:
Ziel c:
oder
Stellen Sie den Delegaten des Textfelds auf den aktuellen Ansichtscontroller ein und dann:
quelle
Im App-Delegaten können Sie schreiben
Auf diese Weise können Sie nicht zu viel Code schreiben.
quelle
Versuchen Sie, eine Vorstellung davon zu bekommen, was ein Ersthelfer in der Hierarchie der iOS-Ansicht ist. Wenn Ihr Textfeld aktiv wird (oder der Ersthelfer), wenn Sie es berühren (oder das Messasge
becomeFirstResponder
programmgesteuert übergeben), wird die Tastatur angezeigt . Um Ihr Textfeld als Ersthelfer zu entfernen, sollten Sie die NachrichtresignFirstResponder
dort weiterleiten .Um die Tastatur auf der Eingabetaste auszublenden, sollten Sie die Delegate-Methode implementieren
textFieldShouldReturn:
und dieresignFirstResponder
Nachricht übergeben.quelle
Folgendes verwende ich in meinem Code. Es wirkt wie ein Zauber!
Fügen Sie in yourviewcontroller.h Folgendes hinzu:
@property (nonatomic) UITapGestureRecognizer *tapRecognizer;
Fügen Sie dies nun in der .m-Datei Ihrer ViewDidLoad-Funktion hinzu:
Fügen Sie diese Funktion auch in die .m-Datei ein:
quelle
Um eine Tastatur zu schließen, nachdem die Tastatur aufgetaucht ist, gibt es zwei Fälle :
wenn sich das UITextField in einer UIScrollView befindet
wenn sich das UITextField außerhalb einer UIScrollView befindet
2.Wenn sich das UITextField außerhalb einer UIScrollView befindet, überschreiben Sie die Methode in Ihrer UIViewController-Unterklasse
Sie müssen auch einen Delegaten für alle UITextView hinzufügen
Um eine IBAction zu erstellen, drücken Sie Strg + Klicken Sie auf die UITapGesture und ziehen Sie sie in die .h-Datei von viewcontroller.
Hier habe ich tappedEvent als meinen Aktionsnamen benannt
Die oben angegebenen Informationen wurden über den folgenden Link abgeleitet. Weitere Informationen erhalten Sie von mir oder wenn Sie die oben genannten Daten nicht verstehen.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
quelle
Für eine Gruppe von
UITextView
s in aViewController
:Swift 3.0
Ziel c
quelle
Ich weiß, dass dies von anderen beantwortet wurde, aber ich fand den anderen Artikel, der auch kein Hintergrundereignis abdeckte - Tabellenansicht oder Bildlaufansicht.
http://samwize.com/2014/03/27/dismiss-keyboard-when-tap-outside-a-uitextfield-slash-uitextview/
quelle
Da auf den Tags nur iOS steht, werde ich die Antwort für Swift 1.2 und iOs 8.4 veröffentlichen. Fügen Sie diese in Ihre Swift-Klasse für View Controller ein:
Vergessen Sie auch nicht, UITextFieldDelegate in die Klassendeklaration aufzunehmen und Ihre Textfelder auf self (die Ansicht) zu delegieren.
quelle
IN Swift 3
ODER
quelle
Also hier ist, was ich getan habe, um es zu entlassen, nachdem ich den Hintergrund berührt oder zurückgekehrt bin. Ich musste das delegate = self in viewDidLoad und später auch die delegate-Methoden in den .m-Dateien hinzufügen.
quelle
Verwenden Sie dies einfach in Objective-C, um die Tastatur zu schließen:
quelle
Zuerst müssen Sie einen Textfelddelegeten in die .h-Datei einfügen. Wenn nicht, deklarieren Sie
(BOOL)textFieldShouldReturn:(UITextField *)textField
diese Methode als nicht aufgerufen. Fügen Sie also zuerst einen Delegaten hinzu und schreiben Sie den Code zum Ausblenden der Tastatur in diese Methode.Probier diese..
quelle
Delegat hinzufügen: UITextFieldDelegate
und fügen Sie dann diese Delegatmethode hinzu
// Das sollte perfekt funktionieren
quelle
Wenn Sie mehr als ein Textfeld im Bildschirm verwenden Bei dieser Methode müssen Sie das Textfeld nicht jedes Mal wie erwähnen
quelle
Swift 2:
Das ist es, was getan wird, um alles zu tun!
Schließen Sie die Tastatur mit der
Done
Taste oderTouch outSide
,Next
um zur nächsten Eingabe zu gelangen.Ändern Sie zuerst TextFiled
Return Key
ToNext
in StoryBoard.quelle
Wenn Sie den aktuellen View Controller oder die Textansicht nicht kennen, können Sie die Responder-Kette verwenden:
quelle
für schnelle 3-4 habe ich gerne behoben
Kopieren Sie einfach Einfügen an einer beliebigen Stelle in der Klasse. Diese Lösung funktioniert nur, wenn alle UItextfelder gleich funktionieren sollen oder wenn Sie nur eines haben!
quelle