web-dev-qa-db-fra.com

Comment puis-je donner un focus UITextView par programme?

Je souhaite donc importer un contrôleur de vue modale doté d'une UITextView et je souhaite que le clavier s'affiche automatiquement et que UITextView soit activé.

J'ai trouvé un moyen d'y parvenir en procédant comme suit:

textView.editable = YES;
textView.editable = NO;

Cela me semble tout simplement hacky, y a-t-il un autre moyen? 

55
Meroon

Puisque UITextView hérite de UIResponder (indirectement, il hérite en fait de UIScrollView, qui hérite de UIView dont then hérite de UIResponder), vous pouvez appeler la méthode -becomeFirstResponder sur votre champ de texte, ce qui le fera devenir le premier répondant et le début édition:

[textView becomeFirstResponder];
155
Alex Rozanski

Rapide:

textView.becomeFirstResponder()
18
Esqarrouth

Cela semble un peu foutu.

La terminologie de Cocoa Touch pour «avoir le focus» est «premier intervenant» et UITextViews affichera leurs claviers lorsqu'ils seront les premiers répondants. Je peux penser à plusieurs techniques pour que UITextView devienne le premier répondeur, mais la plus simple est probablement dans les méthodes viewWillAppear ou viewDidAppear de votre contrôleur de vue:

- (void) viewWillAppear: (BOOL) animé 
 {

 [myTextView devientFirstResponder]; 

 [super viewWillAppear: animated]; 
} 
11
Erik
[textView becomeFirstResponder];
7
Corey Floyd

Lorsque vous souhaitez que le focus soit sur cet objet TextView particulier lors du chargement d'un ViewController, vous pouvez placer textView.becomeFirstResponder () dans la fonction ViewDidLoad surchargée comme suit:

 override func viewDidLoad() {
    super.viewDidLoad()

textView.becomeFirstResponder()

}

Je trouve cela fonctionne sans erreur

0
user8851874