6
votes

Détecter quand un utilisateur clique sur le bouton Coller dans une vue UitextView

J'ai une quantité de problème à essayer de modifier le comportement coupé / copier / coller du uitextview code>. Ce que je veux réaliser est: détecter lorsque l'utilisateur a collé du texte dans le uitextview code>. Lorsque je détecte cela, je vérifierai ensuite les données et faites ma chose.

Selon les documents, j'ai découvert sur uireponder code>. p>

J'ai donc créé une classe simple qui hérite uitextview code>. Dans le fichier .m, je crée 1 fonction appelée. p> xxx pré>

mais pour une raison quelconque, elle ne semble jamais tirer. Je pourrais obtenir la déclaration de sélection de la déclaration de sélection et la traçage des données. P>

-(void) select:(id)sender


0 commentaires

4 Réponses :


1
votes

Oui Votre code ci-dessus pour Coller est correct selon la documentation d'Apple qui se réfère à celle-ci ici . xxx pré>

Je soupçonne que vous le mettez en place dans le mauvais fichier. Vous devriez la mettre en œuvre dans un fichier qui fait partie de la 1ère chaîne de répondeur. Avez-vous sous-classé l'UITEXTVIEW ou utilisez-vous une vanille dans votre mode de vue? P>

HMMM Je pense que le problème est que vous devrez peut-être rendre votre sous-classe UitextView devenir le délégué pour que la méthode des délégués fonctionne, parce que ce n'est pas par l'apparence des choses. Je vais essayer de trouver comment je l'ai fait précédemment. P>

Ok pense que je l'ai trouvé. Je pense que vous devez le faire sur votre classe UiteXtfield sous-classée: p> xxx pré>

ajoutant que sur la fin devrait fonctionner, lui donner un essai! Ce qu'il fait, c'est que votre sous-classe est devenue un objet d'un type d'un type que le délégué peut envoyer une notification à ... c'est le polymorphisme, à moins que quelqu'un ne veuille me corriger ici :) P>

une dernière chose à essayer d'essayer John, Dans la zone ViewController qui contient l'Iboutlet à l'UITEXTVIEW, essayez d'appeler cette méthode sur l'instance de l'UITEXTVIEW: P>

[myUITextView becomeFirstResponder];


5 commentaires

Bonjour, j'ai sous-classé l'UITEXTVIEW et je sais que la sous-classe travaillait achèterait l'achat de certaines des autres méthodes. J'ai également eu le code de pâte dans ma sous-classe également. Mais cela ne semble pas fonctionner (bien dans le simulateur).


J'ai mis à jour ma réponse, mais le simulateur ne devrait pas faire de différence pour que vous sachiez. Et vous a donné +1 btw: p


Bonjour encore, j'ai utilisé ceci comme vous avez suggéré d'avoir l'UitextfeildDelegate. @interface Bstextview: UitextView --- Voici quelque chose de assez aléatoire --- Si je implémente la méthode "SELECT", cela fonctionne pour un "SELECT" - (VOID) Sélectionnez: (ID) Sender {Nslog (@ " Je veux sélectionner "); } Mais toujours pas d'amour de l'appareil ou du simulateur si je presse Coller. Je pense que c'est en fait un bug ...


Hmm, vous avez peut-être raison. La coupe, la copie, la pâte n'est que très nouvelle et il est possible que vous ayez besoin de faire autre chose afin de le faire fonctionner. Il doit y avoir un moyen cependant, Apple ne serait pas seulement expédier une méthode sans aucun moyen de l'invoquer.


J'ai aussi essayé la Setdelegate. Le code "moitié" fonctionne parce que "SELECT" fonctionne comme prévu. Donc, il semble en quelque sorte que la pâte ne tire-t-elle pas, ce qui est très étrange. Je pense que je pourrais tirer un radar à cela.



3
votes

UitextView a une vue qui gère la coupe, la copie, la pâte. C'est uiwebdocumentview. Donc, si UITEXTVIEW est le premier répondeur, UiWebDocumentView l'obtiendra d'abord au lieu de votre mise en œuvre. Je voudrais écraser ces fonctions afin que cela soit très frustrant.


1 commentaires

Pardon. Pas de chance ... Espérons que Apple ouvrira-t-elle pour nous.



3
votes

Même chose me arrive aussi. Sélectionnez (et copiez-vous parfois) est appelé mais coller jamais.

J'ai simulé le comportement à l'aide de TextVievidChanger où je vérifie toujours la différence entre le texte actuel et le précédent. S'il y a plus de lettres différentes et que le texte.Longueur est plus grand qu'il ne doit avoir été collé.

Hope Apple va résoudre ce problème.


1 commentaires

C'est exactement ce que je fais aussi bien. Mais soyez averti des choses comme mercredi seront complètes et vous donneront de fausses lectures. Alors soyez prudent et provoquez-vous TextView.length pour augmenter de plus de 1.



2
votes

Si quelqu'un a encore besoin de solution courte et facile, je partagerai le mien. J'utilise merveilleusement la catégorie NsObject + Rheresponder à partir de Rekit Project . La solution est aussi simple que ceci: xxx


0 commentaires