Comment puis-je sélectionner par programme tout le texte dans UITextField?
Merci!
Comment puis-je sélectionner par programme tout le texte dans UITextField?
Merci!
Thats ce qui a fait le tour pour moi:
[self.titleField setSelectedTextRange:[self.titleField textRangeFromPosition:self.titleField.beginningOfDocument toPosition:self.titleField.endOfDocument]];
Assez moche, mais ça marche, donc il n'y aura pas de menu partagé affiché!
Pour résoudre le problème "ne fonctionne que tous les deux temps", utilisez les éléments suivants:
__weak typeof(self) weakSelf = self;
dispatch_async(dispatch_get_main_queue(), ^{
__strong __typeof(weakSelf) strongSelf = weakSelf;
UITextRange *range = [strongSelf textRangeFromPosition:strongSelf.beginningOfDocument toPosition:strongSelf.endOfDocument];
[strongSelf setSelectedTextRange:range];
});
Merci à Eric Baker (récemment édité à partir du commentaire ici)
Il s'avère que l'appel de -selectAll: avec un expéditeur non nul affiche le menu. L'appeler avec nil entraîne la sélection du texte, mais pas l'affichage du menu.
J'ai essayé ceci après que mon rapport de bogue à ce sujet revienne d'Apple avec la suggestion de passer nil à la place de moi-même.
Inutile de vous frotter à UIMenuController ou à d'autres API de sélection.
Je viens de tester pour vérifier Mirko du commentaire ci-dessus, mais mon test vérifie que selectAll:
a, en fait, sélectionnez tout le texte lorsqu'il est envoyé à l'objet UITextField lui-même.
Notez que le texte sera immédiatement masqués par COUPER | COPIER | COLLER, mais à votre question, c'est exactement ce que s'affiche lorsqu'un utilisateur appuie sur "Sélectionner Tout" pour commencer.
La solution, je vais avec qui suit, notez que la deuxième ligne permet de masquer temporairement le COUPER/COPIER/COLLER dialogue, sans le désactiver pour explicite les sélections de l'utilisateur
[_myTextField selectAll:self];
[UIMenuController sharedMenuController].menuVisible = NO;
Malheureusement, je ne pense pas que vous puissiez faire cela.
Je ne suis pas sûr que cela vous aide, mais setClearsOnBeginEditing
vous permet de spécifier que les UITextField
doivent supprimer la valeur existante lorsque l'utilisateur commence à modifier (il s'agit de la valeur par défaut pour sécurisé UITextFields
).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.