2013-07-22 2 views
-1

Я поделился экземпляром NSColorPanel, и я назначил ему селектор. Я использую его для цвета фона и для цвета шрифта. Когда я хочу установить цвет текста, все работает нормально, но когда я хочу установить цвет фона, селектор вызывается дважды, а цвет фона был изменен на предыдущий цвет. Существует некоторый код:Селектор NSColorPanel был вызван дважды

- (IBAction)showColorPanel:(id)sender { 
NSColorPanel *panel = [NSColorPanel sharedColorPanel]; 
[panel orderFront:nil]; 
//[panel ] 
[panel setAction:@selector(changeColorForBackground:)]; 
[panel setTarget:self]; 
[panel makeKeyAndOrderFront:self]; 
isFontPanel = NO; 
[[self getDesktopController] setFirstString]; 
} 

Selector:

- (void)changeColorForBackground:(id)sender { 
if (!isFontPanel) { 
    DesktopController *desktopController = [self getDesktopController]; 
    [desktopController updateCellBackgroundColor:[sender color]]; 
} 
} 

Thx для ответа!

+1

У вас есть собственные колоды цвета, или вы используете колористику цвета и цвета фона на панели шрифтов? Если вы делаете последнее, почему вы ставите себя в качестве целевой панели? –

ответ

0

Я добавил NSWindowDelegate в мой контроллер и добавить метод

- (void)windowWillClose:(NSNotification *)notification { 
    if ([notification.object isEqual:[NSColorPanel sharedColorPanel]]) { 
     [[NSColorPanel sharedColorPanel] setAction:nil]; 
    } 
} 

Так я должен закрыть NSColorPanel, прежде чем я снова использовать его.

+2

Очень уродливый. Ожидайте множество жалоб/отрицательных отзывов от ваших пользователей о том, что цветная панель не работает. И они не будут ошибаться - это поведение нарушается. –

Смежные вопросы