原來的答案:
如果你不這樣做已經,子類NSTextView
然後實現drawInsertionPointInRect:color:turnedOn:
方法自己做花哨的意義吸引你自己。
另外要注意這條線從文檔:
重點必須在接收器上調用此方法時被鎖定。 你不應該直接調用這個方法。
子類化是要走的路。
更多的應用程序特定的答案:
相反調入[super drawInsertionPointInRect...
的,可考慮做所有的繪圖自己。
像這樣:
- (void)drawInsertionPointInRect:(NSRect)rect color:(NSColor *)color turnedOn:(BOOL)flag
{
//Block Cursor
if(flag)
{
NSPoint aPoint=NSMakePoint(rect.origin.x,rect.origin.y+rect.size.height/2);
int glyphIndex = [[self layoutManager] glyphIndexForPoint:aPoint inTextContainer:[self textContainer]];
NSRect glyphRect = [[self layoutManager] boundingRectForGlyphRange:NSMakeRange(glyphIndex, 1) inTextContainer:[self textContainer]];
[color set ];
rect.size.width =rect.size.height/2;
if(glyphRect.size.width > 0 && glyphRect.size.width < rect.size.width)
rect.size.width=glyphRect.size.width;
NSRectFillUsingOperation(rect, NSCompositePlusDarker);
} else {
[self setNeedsDisplayInRect:[self visibleRect] avoidAdditionalLayout:NO];
}
}
(該代碼對於這I stole from here)
對不起,我實際上正在實施該方法。我更新了這個問題。 (感謝您的回答) – Donovan 2011-12-25 11:52:34
好吧...我編輯爲您添加另一個選項 – 2011-12-25 12:07:12
是的,已經嘗試了代碼。當移動光標時,它將變回正常 – Donovan 2011-12-25 12:19:14