Verwenden Sie -[NSTextView setSelectedTextAttributes:...]
.
Zum Beispiel:
[textView setSelectedTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSColor blackColor], NSBackgroundColorAttributeName,
[NSColor whiteColor], NSForegroundColorAttributeName,
nil]];
Sie können einfach ein leeres Wörterbuch übergeben, wenn Sie die Auswahl in irgendeiner Weise überhaupt nicht angezeigt werden sollen (kurz die Einfügemarke versteckt).
Eine andere Option ist, nach Auswahländerungen zu sehen und die "Auswahl" unter Verwendung von temporary attributes anzuwenden. Beachten Sie, dass temporäre Attribute verwendet werden, um Rechtschreib- und Grammatikfehler anzuzeigen und Ergebnisse zu finden. Wenn Sie also diese Features von NSTextView beibehalten möchten, sollten Sie nur temporäre Attribute hinzufügen und entfernen und nicht ersetzen.
Ein Beispiel hierfür ist (in einer NSTextView Unterklasse):
- (void)setSelectedRanges:(NSArray *)ranges affinity:(NSSelectionAffinity)affinity stillSelecting:(BOOL)stillSelectingFlag;
{
NSArray *oldRanges = [self selectedRanges];
for (NSValue *v in oldRanges) {
NSRange oldRange = [v rangeValue];
if (oldRange.length > 0)
[[self layoutManager] removeTemporaryAttribute:NSBackgroundColorAttributeName forCharacterRange:oldRange];
}
for (NSValue *v in ranges) {
NSRange range = [v rangeValue];
if (range.length > 0)
[[self layoutManager] addTemporaryAttributes:[NSDictionary dictionaryWithObject:[NSColor blueColor] forKey:NSBackgroundColorAttributeName]
forCharacterRange:range];
}
[super setSelectedRanges:ranges affinity:affinity stillSelecting:stillSelectingFlag];
}
Durch die Hintergrundfarbe zu Clear Einstellung, das Highlight funktioniert erst, nachdem die gesamte Auswahl abgeschlossen ist. Wie kann ich diese Attribute anwenden, während die Auswahl läuft? – DexterW
Benachrichtigungen werden erst ausgegeben, wenn die Maustaste losgelassen wird (d. H., Sie sind nicht länger 'stillSelecting'). Wenn Sie mit Auswahlen arbeiten möchten, müssen Sie eine Unterklasse von NSTextView erstellen (meine Antwort wurde bearbeitet, um Beispielcode zu erhalten). –