NSTextView et Tooltips [RESOLU]
Grambo
Membre
Bonjour,
Je souhaiterais pouvoir afficher dans un tooltip la traduction d'un mot lorsque je le survole dans un NSTextView. LA traduction est à la charge de mon programme.
J'utilise pour l'affichage des tooltips la fonction delegate - (NSString *)textView:(NSTextView *)textView willDisplayToolTip:(NSString *)tooltip forCharacterAtIndex:(NSUInteger)characterIndex
Or je n'obtiens un toolTip que lorsque j'active "Continuous Spell Checking" dans Interface Builder, mais pas toujours. La plupart des mots du textView sont soulignés en rouge (mot inconnu) et j'obtiens le tooltip qui me convient lorsque je passe ma souris dessus. En revanche je n'obtiens aucun tooltip pour les mots qui ne sont pas soulignés.
Dans l'absolu je préférerais qu'aucun mot ne soit souligné en rouge.
J'ai donc deux questions:
La gestion des toolitps de NSTextView est elle liée au Spell Checking?
Comment activer les tooltips pour tous les mots de mon NsTextView?
Merci de votre aide.
Je souhaiterais pouvoir afficher dans un tooltip la traduction d'un mot lorsque je le survole dans un NSTextView. LA traduction est à la charge de mon programme.
J'utilise pour l'affichage des tooltips la fonction delegate - (NSString *)textView:(NSTextView *)textView willDisplayToolTip:(NSString *)tooltip forCharacterAtIndex:(NSUInteger)characterIndex
Or je n'obtiens un toolTip que lorsque j'active "Continuous Spell Checking" dans Interface Builder, mais pas toujours. La plupart des mots du textView sont soulignés en rouge (mot inconnu) et j'obtiens le tooltip qui me convient lorsque je passe ma souris dessus. En revanche je n'obtiens aucun tooltip pour les mots qui ne sont pas soulignés.
Dans l'absolu je préférerais qu'aucun mot ne soit souligné en rouge.
J'ai donc deux questions:
La gestion des toolitps de NSTextView est elle liée au Spell Checking?
Comment activer les tooltips pour tous les mots de mon NsTextView?
Merci de votre aide.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Peut-être plus de renseignements dans le document sur OnlineHelp et sur le protocole NSToolTipOwner
On peut aussi essayer d'installer le mécanisme "à la main" avec les méthodes de NSView du type addTrackingArea:
Et dis lui aussi, tant qu'il y est, de ré-écrire OS X...
Le delegate textView:willDisplayToolTip:forCharacterAtIndex: de NSTextView est appelé que si il y a déjà un tootip à modifier. Ce delegate permet donc d'en modifier le texte à la volée.
Si ton texte ne contient pas de tooltip, alors le delegate n'est pas appelé.
Pour ajouter des tooltips à tes mots, faut simplement ajouter l'attribut NSToolTipAttributeName pour chaque mot dont tu veux un tooltip à l'attributedString qui est affichée dans la text view.
Je te donne un petit exemple :
Autant pour moi , je l'avais oublié cet attribut !
Mais bon c'était rigolo à la main ... ;D
L'utilisation de l'attribut d'un NSMutableAttributedString m'a effectivement permis de résoudre le problème sans ré-écrire OSX! En plus je n'ai plus besoin de la fonction delegate.
Mon problème est résolu.
Merci.
Tout dépend comment tu vas générer les tootips.
- soit tu créés un tooltip par mot dans ton texte (et donc autant d'attributs),
- soit tu ne créés qu'un seul tootip qui fait tout ton texte, et dans ce cas tu utilises le delegate, et via le paramètre forCharacterAtIndex, tu récupères la position du caractère survolé par la souris au moment de l'affichage du tooltip afin de modifier son contenu.
Ce sont 2 gestions différentes, chacune à ses avantages, et c'est le design de ton code qui décidera.