-[NSTextView setSelectedTextAttributes:...]
'u kullanın. Örneğin
: Eğer (Ekleme noktasını gizleme kısa) hiç bir şekilde gösterilen seçeneğe istemiyorsanız
[textView setSelectedTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSColor blackColor], NSBackgroundColorAttributeName,
[NSColor whiteColor], NSForegroundColorAttributeName,
nil]];
Sadece boş bir sözlük geçebilir.
Seçim değişikliklerini izlemek ve temporary attributes kullanarak "seçimi" uygulamak için başka bir seçenektir. Yazım ve dilbilgisi hatalarını göstermek ve sonuçları bulmak için geçici niteliklerin kullanıldığını unutmayın; Bu nedenle, NSTextView'ın bu özelliklerini korumayı önemsiyorsanız, yalnızca geçici nitelikler ekleyip kaldırarak değiştirin, değiştirmeyin.
Bunun bir örneği, (a NSTextView alt sınıfta) 'dir:
- (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];
}
clearColor arka plan rengini ayarlayarak, vurgulamak tüm seçim tamamlandıktan sonra çalışır. Seçim devam ederken bu özellikleri nasıl uygularım? – DexterW
Bildirimler, fare düğmesi serbest bırakılıncaya kadar teslim edilmez (yani, artık "stillSelecting" değerine sahip değilsiniz). Devam eden seçimleri işlemek istiyorsanız, NSTextView alt sınıfını (bazı örnek kodları sağlamak için cevabımı düzenledim) almanız gerekir. –