2010-12-15 69 views
1

Je suis un peu rouillé sur mon cacao, alors portez-moi sur la terminologie et autres.Comment recevoir une notification chaque fois qu'un caractère est entré dans NSTextField?

Je veux écrire quelque chose qui est essentiellement un vérificateur d'orthographe inverse. Comme dans, si un mot est correctement orthographié, alors pour les mots aléatoires il le change en une version mal orthographiée. Blague inoffensive à jouer sur quelqu'un. Donc, mon principal problème est que je n'ai aucune idée de comment faire cela (problème majeur, je sais). J'aime la façon dont textedit effectue une vérification orthographique à la volée, mais j'aimerais intégrer ce genre de comportement dans le comportement générique de NSTextField. Existe-t-il un moyen de notifier une application lorsqu'un caractère est entré dans un NSTextField?

EDIT: Mon but est de faire en sorte que ceci soit à l'échelle du système, car dans n'importe quel NSTextField du système, ce comportement serait hérité. Je suis ouvert à certains sérieux piratage ici.

Répondre

1

Pour répondre à votre question: joindre un délégué au contrôle NSTextField, et mettre en œuvre

- (void)controlTextDidChange:(NSNotification *)aNotification 

Notez que NSTextField utilise l'éditeur de champ partagé pour modifier le texte, qui est un objet NSText. Vous pourriez être en mesure de manipuler cela pour faire ce que vous voulez.

+0

J'ai oublié de le mentionner dans mon article, mais je veux que ce soit un comportement à l'échelle du système, en ce sens que chaque NSTextField afficherait ce comportement. – Alex

+0

J'espère vraiment que ce n'est pas possible! –

+0

J'ai mentionné dans mon édition que je suis prêt pour un piratage sérieux, si besoin est. Je peux aller jusqu'au niveau du noyau si je le dois (bien que cela prenne ça d'une blague à un rootkit) – Alex

0

J'aime l'idée! Cela devrait être assez facile à faire. Vous devez d'abord décider si vous voulez utiliser NSTextField ou NSTextView. TextEdit.app utilise NSTextView ce qui est approprié pour des tâches de type traitement de texte plus étendues. NSTextField est plus pour les petits morceaux de texte au format minimal. Il y a beaucoup de façons d'aborder cela, mais je vais vous en donner quelques-unes.

Pour NSTextField, définissez votre objet contrôleur comme délégué pour le champ de texte et remplacez la méthode controlTextDidChange:. Chaque fois que l'utilisateur tape un caractère dans le champ de texte, vous recevrez ce message. Vous pouvez ensuite modifier la chaîne du champ pour introduire le mot mal orthographié.

Pour NSTextView, vous pouvez activer la vérification orthographique et utiliser la méthode de délégation de la vue de texte textView:didCheckTextInRange:types:options:results:orthography:wordCount:. Vous devriez être capable de modifier les résultats de la vérification orthographique.