J'ai une quantité de problème à essayer de modifier le comportement coupé / copier / coller du Selon les documents, j'ai découvert sur J'ai donc créé une classe simple qui hérite 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> 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.
uireponder code>. p>
uitextview code>.
Dans le fichier .m, je crée 1 fonction appelée. p>
-(void) select:(id)sender
4 Réponses :
Oui Votre code ci-dessus pour Coller est correct selon la documentation d'Apple qui se réfère à celle-ci ici . 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> 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];
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
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.
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. P>
Pardon. Pas de chance ... Espérons que Apple ouvrira-t-elle pour nous.
Même chose me arrive aussi. Sélectionnez (et copiez-vous parfois) est appelé mais coller jamais. p>
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é. p>
Hope Apple va résoudre ce problème. P>
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.
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: