2010-11-22 20 views
0

Lorsque vous utilisez NSRectFill ou NSBezierPath.fillRect pour dessiner un bloc sur du texte dans un NSTextView, le texte semble passer au-dessus de mon rectangle. C'est à dire. il y a juste un ruban du rectangle qui jaillit derrière le texte que je suis censé écraser. Comment puis-je m'assurer que je dessine le rectangle après le dessin du texte?NSRectFill dans NSTextView est remplacé par le texte

Répondre

1

Si vous avez sous-classé NSTextView. Tout d'abord, dessinez le texte avec le super et ensuite dessinez vos propres trucs.

- (void)drawRect:(NSRect)dirtyRect { 
    [super drawRect:dirtyRect]; 

    NSRectFill(yourOwnRect); 
} 
+0

Et c'est la seule façon correcte de le faire. Dessiner dans la vue depuis un contrôleur n'est jamais fiable et viole la séparation des préoccupations - le dessin est le travail de la vue. –

+0

Bingo, ça a fait l'affaire. J'avais en fait essayé de dessiner depuis drawRect: avant, mais je ne m'étais pas rendu compte que le système de coordonnées était différent de celui de cette méthode par opposition au reste de mon code et pensais incorrectement que le dessin ne fonctionnait pas non plus. Merci! – stdout