Pour un objet NSTextField, notez qu'il s'agit d'un objet NSTextFieldCell qui effectue le dessin. Vous devrez remplacer -drawInteriorWithFrame: inView: et faire la chaîne vous-même. Le défi sera de trouver les rectangles (plus d'un si la gamme est enveloppée) dans lequel votre sous-chaîne est dessinée. Vous allez devoir utiliser NSLayoutManager et un conteneur NSTextStorage.
Idéal pour utiliser un NSTextView. Les composants NSLayoutManager et NSTextStorage associés sont déjà pré-assemblés et vous obtenez beaucoup d'autres fonctionnalités gratuitement. Plus important encore, il existe une méthode pratique - [NSTextView drawViewBackgroundInRect:] pour que vous n'ayez pas à sous-classer quoi que ce soit. Vous n'avez qu'à demander l'affichage du texte pour son gestionnaire de disposition et son stockage de texte, puis lui demander les rectangles pour la plage donnée. Voir le Text System Overview et les documents liés pour plus de détails.
Pour trouver efficacement les sous-chaînes intéressantes, vous pouvez utiliser custom attributes (ou les fonctions intégrées telles que NSLinkAttributeName) pour vos plages intéressantes.
Si vous essayez d'envelopper votre tête autour du système de texte, vous pourriez faire pire que de commencer avec cette vidéo d'Aaron Hillegass en parler: http://vimeo.com/4793853 –
Un simple exemple de code serait génial ! :) – papr
Ce serait, non? :-) Malheureusement, ce n'est pas quelque chose qui peut être réduit à une longueur compatible StackOverflow. Il y a des exemples qui circulent - essayez cocoadev.com et le moteur de recherche habituel. Astuces pour les mots-clés: NSLayoutManager, glyph range, nstextview drawBackgroundInRect: ... –