Jos*_*ane 4 macos cocoa objective-c nscolorwell
我一直在研究如何NSColorWell在我的应用程序中使用,但似乎没有太多的文档.
有没有办法将颜色选择器(例如NSColorWell/ NSColorPanel)直接嵌入到我的视图中?单击井时,它始终显示一个新的颜色选择窗口.这不能以某种方式嵌入吗?
我有一个自定义NSButton类,我从中传递颜色NSColorWell.要做到这一点,我必须让用户选择一种颜色,然后单击一个按钮将此颜色发送到我的自定义类.有没有办法简单地检测何时直接从颜色选择器中选择新颜色?
对于问题1,不,这是一个系统的行为NSColorWell.不喜欢吗?做你自己的.
问题2有两种可能的解决方案.
方法1:将颜色井中的动作连接到IB中的对象,并通过班级的插座读取颜色的颜色.井中的任何颜色变化都会向您选择的选择器发送消息.
方法2:将您自己的对象作为观察者添加到color属性中
[colorwell addObserver:self forKeyPath:@"color" options:0 context:NULL];
Run Code Online (Sandbox Code Playgroud)
然后实施
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Run Code Online (Sandbox Code Playgroud)
任何颜色变化都会触发该方法.
确保从颜色分离dealloc或其他分解方法中分离:
[colorwell removeObserver:self forKeyPath:@"color"]
Run Code Online (Sandbox Code Playgroud)
有一种方法可以用绑定来做,但这两个都很好.