2010-05-12 8 views
4

Je voudrais créer un UITextView que vous pouvez taper n'importe où et commencer à taper à cet endroit. Le comportement par défaut du contrôle est que la frappe commence à la fin du dernier caractère. Donc, si j'avais un UITextView sans texte et que je tapais au milieu du contrôle, je voudrais commencer par taper - pas en haut à gauche.SDK iPhone: Comment créer un UITextView qui insère du texte dans lequel vous tapez?

Quelle est la meilleure façon d'implémenter ce comportement? J'ai envisagé de faire en sorte que la valeur par défaut de la vue soit de 3000 caractères ou quelque chose de similaire, mais cela ne semble pas une solution élégante. Suggestions?

+0

pouvez-vous poster le code? Je ne peux pas obtenir de la réponse de Ben Collins. Alors s'il vous plaît aidez-moi, et espère que cela aidera à d'autres aussi. –

Répondre

4

Je suggère dérivant de UITextView pour créer une vue personnalisée qui gère les robinets. Vous souhaitez remplacer les méthodes suivantes, sans doute:

  • touchesBegan:withEvent
  • touchesMoved:withEvent
  • touchesEnded:withEvent
  • touchesCancelled:withEvent

Assurez-vous que la propriété userInteractionEnabled a une valeur par défaut de YES. Remplacez hitTest:withEvent et pointInside:withEvent pour savoir où, dans votre vue, l'utilisateur a tapé.

Assurez-vous de lire la section Responding to Events dans le Guide de programmation de vue pour iOS, ainsi que le Event Handling Guide for iOS pour plus de détails. Quoi qu'il en soit, une fois que vous avez déterminé où l'utilisateur a touché, vous pouvez modifier le texte ou repositionner le karat selon le cas.

+0

Je vais essayer et voir comment ça se passe. J'ai essayé plusieurs fois de gérer les événements tactiles sur un UITextView et ça ne va généralement pas bien à cause de la façon dont il a tendance à manger les événements tactiles. Cependant, je n'ai jamais essayé d'utiliser les tests de réussite. – memmons

+0

pouvez-vous expliquer en détail avec le code si possible? parce que beaucoup de parson ne peuvent pas le comprendre. –

Questions connexes