Commande dans un NSTextView
Suite du post nsstream et stderr.
Quand on clique dans un NSTextView, cela ouvre un "field editor". Je souhaite exécuter une méthode quand l'utilisateur entre un retour à la ligne et je n'y arrive pas.
Dans la doc j'ai trouvé différents textes sur le "field editor": "working with the field editor", "Using a custom field editor" ... etc Je commence a m'y perdre entre un delegate que je n'arrive pas à mettre en place, la possibilité de sous-classer le NSTextView ou comment utiliser une des deux méthodes:
- (BOOL)control:(NSControl *)control textView:(NSTextView *)fieldEditor doCommandBySelector:(sel)commandSelector
(id)windowWillReturnFieldEditor:(NSWindow *)sender toObject:(id)anObject
Quelqu'un a t-il une idée de comment faire exécuter une méthode quand l'utilisateur entre un retour à la ligne dans un NSTextView.
Réponses
D'abord, un clic sur un NSTextView n'ouvre pas un field editor, car le field editor est un NSText, ce qu'est déjà un NSTextView (c'est un clic sur un NSTextField qui ouvre le field editor)
Essaye la méthode déléguée:
- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector
en complément de la réponde de mpergand
Exact! j'étais un peu perdu là !! Cool, ça marche.
Question subsidiaire: Cette méthode définie depuis OSx 10.0 est dans le NSTextViewDelegate valable depuis 10.6. Jusqu'à 10.5 cette méthode était dans un protocole informel. Pour que ça marche sous 10.5 et 10.6 comment fait-on? un projet agregate?
On fait rien
Donner un nom à un protocole informel c'est une manière plus structurée de définir un protocole. Du point de vue fonctionnel, cela ne change rien.