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?
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];
Rapide:
textView.becomeFirstResponder()
Cela semble un peu foutu.
La terminologie de Cocoa Touch pour «avoir le focus» est «premier intervenant» et UITextView
s 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]; }
[textView becomeFirstResponder];
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