检测NSColorPanel中的颜色变化

con*_*ndo 4 cocoa colors objective-c

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

NSColorPanel *colorPanel = [NSColorPanel sharedColorPanel];
[colorPanel orderFront:nil];
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Mat*_*oal 10

您应该使用目标操作:

NSColorPanel *cp = [NSColorPanel sharedColorPanel];
[cp setTarget:self];
[cp setAction:@selector(colorUpdate:)];
Run Code Online (Sandbox Code Playgroud)

并以这种方式定义动作:

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

}
Run Code Online (Sandbox Code Playgroud)


Pra*_*ane 0

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

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Run Code Online (Sandbox Code Playgroud)