1つのウインドウに複数のColorWellを配置した時のColorPanelの共用方法の覚え書き。
下のように1つのウインドウに2個のColorWellを配置すると、どちらをクリックしてもColorPanelが開きますが、このColorPanelからのdelegateの- (void)changeColor:(id)sender
は1つしか書けません。
NSColorWellのインスタンスメソッドを調べてみると、- (BOOL)isActiveというのを発見。
これを使って対象のColorWellの特定ができました。
ヘッダー:CfCalApp.h
@interface CfCalApp : NSObject {
IBOutlet id o_1st_colorWell; // 1個目のcolorWellへのアウトレット
IBOutlet id o_2nd_colorWell; // 2個目のcolorWellへのアウトレット
}
ソース:CfCalApp.m
// ColorPanelのデリゲート
- (void)changeColor:(id)sender
{
NSColor *color = [sender color];
if ( [o_1st_colorWell isActive] ) {
// 1個目のColorWellに対応した処理
}
if ( [o_2nd_colorWell isActive] ) {
// 2個目のColorWellに対応した処理
}
}
1つのウインドウに配置した複数のColorWellは排他的にActive/DeactiveになるのでこれでOKでした。