Метод IBAction с Colorwell
У меня есть Colorwell, что при нажатии запускает метод IBAction. Там я проверяю, отличается ли новый выбранный цвет от цвета по умолчанию для события, и если это так, я показываю пользователю лист диалогового окна, предупреждая их об этом.
У меня проблема в том, что средство выбора цвета вызывает метод действия каждый раз, когда перемещается элемент управления, такой как ползунок. Это приводит к тому, что метод действия вызывается n раз, а не один раз, и мне приходится отвечать на диалог n раз.
В IB есть флажок для непрерывного состояния. Если я оставлю это без проверки, это не вызовет метод действия вообще. Большинство элементов управления ползунка позволяют вам выбирать между непрерывным состоянием или одним состоянием, но я не вижу эту опцию для цветного колодца.
Любой совет приветствуется;
Простой код:
-(IBAction)colorwellManager{
if([self shouldAlertUser] == YES){
[self dialog:@"Your are about to change the default color" @"Confirm Button"];
}
}
Если ползунок перемещается на палитре цветов, этот код выполняется много раз.
1 ответ
Я нашел хорошее объяснение тому, что здесь происходит:
NSColorPanel блокирует события "вверх" мыши (второй ответ) Базовому классу (NSColorPanel) необходимо установить для setContinuous значение NO программно, в дополнение к снятию флажка непрерывного состояния colorwell в IB. Это позволяет цвету хорошо вызывать метод действия только один раз за действие.