2017-10-18 28 views
0

J'ai mon code dans Swift 3. J'ai deux UITextFields et un UIButton à mon avis. J'ai le délégué textFieldShouldEndEditing du premier UITextField qui est déclenché lorsque je me concentre sur le 2nd UITextField. Cependant quand je tape sur le UIButton ce délégué n'est pas tiré. Je pensais que lorsqu'un UIButton obtient le focus, l'événement UITextField se déclenche automatiquement car il perd le focus. Cependant, lorsque je tape sur l'UIButton, le curseur clignote toujours dans UITextField, ce qui signifie qu'il ne perd pas le focus.UIButton ne reçoit pas le focus

Les idées sur les raisons pour lesquelles UIButton n'obtient pas de focus seront les plus appréciées.

Merci.

Répondre

0

Ceci est un aspect exaspérant de développer des formulaires sur iOS. Les touches ne suppriment pas le focus de UITextField/UITextView de la même manière que dans un formulaire HTML. Je suis sûr qu'il existe des moyens plus élégants pour résoudre ce problème, mais si je veux le faire de manière cohérente dans tous les formulaires, je m'assure que la ligne de code suivante est exécutée lorsque les utilisateurs tapent sur l'un de mes boutons.

- (void)userDidTapButton:(id)sender 
{ 
    [[[UITextField new] becomeFirstResponder] resignFirstResponder] 
    // the above embarrassing line of code basically creates a new textfield 
    // puts focus in it (thereby removing focus from any existing textfields 
    // and then removes focus again 
    // this ensures that delegate events fire on your existing textfields 

// finally, run any other button code 
}