2012-01-10 81 views
2

我有一些代碼可以打開NSColorPanel。我怎麼能夠檢測到顏色改變後再運行回調?檢測NSColorPanel中的顏色變化

NSColorPanel *colorPanel = [NSColorPanel sharedColorPanel]; 
[colorPanel orderFront:nil]; 

在此先感謝。

回答

0

您是否嘗試過使用KVO?您可以從期望的控制器觀察colorPanel;如果發生變化,您將收到回電:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
2

有一種方法- (void)changeColor:(id)sender。當用戶在NSColorPanel對象中選擇一種顏色時,它會發送給第一個響應者。您可以在任何需要響應顏色變化的響應者中覆蓋此方法。可能是,它可以幫助。

+0

我已經試過了,但它並沒有以往任何時候都顯得打電話。 – consindo 2012-01-10 09:37:41

+0

這將被設置爲正確的答案。 – 2013-01-14 00:23:41

6

你應該使用目標的行動:

NSColorPanel *cp = [NSColorPanel sharedColorPanel]; 
[cp setTarget:self]; 
[cp setAction:@selector(colorUpdate:)]; 

和定義的操作是這樣的:

-(void)colorUpdate:(NSColorPanel*)colorPanel{ 
    NSColor* theColor = colorPanel.color; 
    ....your code 

}