J'ai une hiérarchie de vue iOS quelque peu complexe. Un morceau de texte est un UITextField éditable. Lorsque l'utilisateur le touche, il devient le premier répondeur et est modifiable.Meilleure façon d'autoriser la modification de texte sur une interface utilisateur iPhone complexe
Voici le problème, cependant: La meilleure pratique devrait être qu'une touche n'importe où en dehors du contrôle d'édition l'amène à démissionner du premier répondeur et à terminer l'édition. Quelle est la meilleure façon d'accomplir cela?
Techniques J'ai essayé:
- Utilisez la propriété
exclusiveTouch
, qui empêche l'utilisateur d'interagir avec d'autres contrôles, mais ne provoque pas de modification à la fin. Empêche également l'utilisateur d'interagir avec le bouton "Terminé" de ma barre d'outils. - Placez un UIView transparent sous le contrôle de champ de texte et par-dessus tout (sauf la barre d'outils), et utilisez les touches pour terminer la modification. Cela fonctionne, mais je finis par reparer le champ de texte sur cette autre vue aléatoire qui se trouve au-dessus de toute ma hiérarchie, ce qui signifie que je dois m'occuper de la disposition du champ de texte à plusieurs endroits. à l'origine, et je dois déléguer tout son comportement de sa vue «bouclier» à son conteneur d'origine, qui a toutes les logiques connexes.
Existe-t-il une solution élégante à ce problème qui me manque? Je pense que cela doit être un problème de conception commun.
Merci.
Merci. Ah, mais la vue de texte est enfouie dans ma hiérarchie d'objets et ne connaît pas les limites de l'écran global. Plus problématique, la vue de texte peut ne pas être la sous-vue "supérieure" dans toute la zone de l'écran - si ce n'est pas le cas, l'ajout de vues de pairs autour ne garantit rien, n'est-ce pas? –
Vous ne pouvez pas masquer une région sans savoir ce que ce masque couvrira et ce que le masque ne couvrira pas. Ainsi, toute solution nécessitera une portée suffisante pour rassembler ces deux limites. Vous pouvez soit faire passer le texte par le rectangle, soit désactiver le rectangle/la région de la vue, ou les deux par quelque chose entre les deux. Le contrôleur pour les choses à couvrir semble être un bon endroit pour consolider à la fois les régions ou les régions, sinon le contrôleur pour la vue du texte. – hotpaw2
Merci pour la discussion. J'ai ajouté votre suivi perspicace dans votre réponse réelle. –