Обнаружить изменение цвета в NSColorPanel - PullRequest
4 голосов
/ 10 января 2012

У меня есть код, который открывает NSColorPanel. Как я смогу определить, когда изменился цвет, а затем запустить обратный вызов?

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

Заранее спасибо.

Ответы [ 3 ]

10 голосов
/ 14 марта 2013

Вы должны использовать целевое действие:

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

и определите действие следующим образом:

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

}
2 голосов
/ 10 января 2012

Есть метод - (void)changeColor:(id)sender. Он отправляет первому респонденту, когда пользователь выбирает цвет в объекте NSColorPanel. Вы можете переопределить этот метод в любом респонденте, который должен ответить на изменение цвета. Может быть, это может помочь.

0 голосов
/ 10 января 2012

Вы пробовали использовать КВО?Вы можете наблюдать colorPanel с желаемого контроллера;в случае изменения вы получите обратный звонок:

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...