2015-06-16 35 views
0

我已經設置了一個NSColorPanel,我用它來改變窗口的背景顏色。在窗口中還有一個帶有一些文本的NSTextView。問題是,當我改變背景的顏色時,文本顏色變爲相同。我試圖找到方法來防止這種情況,但沒有成功。如何在NSTextView中禁用文本顏色?

+1

你是如何防止它?你的textview是firstResponder嗎?根據[changeColor:]上的'NSColorPanel'文檔(https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSColorPanel_Class/#//apple_ref/occ/instm/NSObject/changeColor :),它會被髮送到firstResponder,所以你的textview可能會捕獲這個事件。 –

+0

@ Sega-Zero,是的,textview是第一響應者。 – user3338161

+0

好吧,然後嘗試暫時將另一個控件設置爲firstResponder,或者使用空白'changeColor:'方法將文本視圖子類化。 –

回答

1

重寫NSTextViewchangeColor:方法和在該方法中,保持出口到backgeoundView和,而不是改變TextView的自己的顏色將其發送到出口:

IBOutlet NSView *changeColorTarget; 

...

- (IBAction)changeColor:(id)sender { 
    if(self.changeColorTarget) {  
     [NSApp sendAction:@selector(changeColor:) target:self.changeColorTarget forEvent:nil]; 
    } else { 
     [super changeColor:sender];  
    } 
} 

- >這樣textview保留其原有的功能,除非你設置插座

相關問題