检测NSColorPanel中的颜色变化

时间:2012-01-10 08:48:31

标签: objective-c cocoa colors

我有一些打开NSColorPanel的代码。如何检测颜色何时更改,然后运行回调?

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

提前致谢。

3 个答案:

答案 0 :(得分:10)

您应该使用目标行动:

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

并以这种方式定义动作:

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

}

答案 1 :(得分:2)

有一种方法- (void)changeColor:(id)sender。当用户选择NSColorPanel对象中的颜色时,它会发送给第一个响应者。您可以在需要响应颜色更改的任何响应程序中覆盖此方法。可能是,它可以帮助。

答案 2 :(得分:0)

您是否尝试过使用KVO?你可以从所需的控制器观察colorPanel;如果发生变化,您将收到回电:

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