UITextField resignFirstResponder non funziona?
-
27-09-2019 - |
Domanda
Ho ricontrollato tutti i collegamenti nel file pennino. Il mio codice -
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"iphone_bg_login.png"]];
self.title = @"Login screen";
loginTxt = [[UITextField alloc] init];
pwdText = [[UITextField alloc] init];
loginFailedTxt = [[UILabel alloc] init];
loginBtn = [[UIButton alloc] init];
navAppDelegate = (NavAppDelegate *)[[UIApplication sharedApplication] delegate];
navAppDelegate.navController.navigationBarHidden = YES;
//NSArray *subVs = (NSArray *) [self.view subviews];
[super viewDidLoad];
}
Ho usato una sottoclasse di UIView (UIControl)
e ha aggiunto tutti gli elementi dell'interfaccia utente ad esso nel metodo UIControl's touchDown
interfaccia builder.The è collegato al metodo backgroundTap
.
-(IBAction) backgroundTap:(id) sender {
[loginTxt resignFirstResponder];
[pwdText resignFirstResponder];
//[[UIApplication sharedApplication] becomeFirstResponder];
//[sender resignFirstResponder];
}
Quindi, la tastiera non viene rimosso, come si suppone. Non so perché.
Grazie per l'aiuto! Teja.
Soluzione
DyingCactus ha indicato il vostro errore. Si sta sostituendo la NIB-versione del controllo con un controllo completamente diversa, perdendo il puntatore a quello nel pennino. Quando si chiama resignFirstResponder
, si sta chiamando sul vostro oggetto duplicato, non quello che in realtà sullo schermo. Sbarazzarsi delle chiamate alloc
e init
per le cose cablati nel pennino.