我有一个colorwell,当点击触发一个IBAction方法。在那里,我检查所选择的新颜色是否与事件的默认颜色不同,如果是,我向用户显示一个工作表对话框,提醒他们注意这一点。
我遇到的问题是,颜色选择器每次移动滑块等控件时都会调用action方法。这将导致action方法被调用n次而不是一次,并且我必须响应对话框n次。
在IB中有一个复选框用于连续状态。如果我不选中它它根本不会调用动作方法。大多数滑块控件允许您在连续状态或单一状态之间进行选择,但我没有看到颜色有这个选项。
欢迎指教;
简单代码:-(IBAction)colorwellManager{
if([self shouldAlertUser] == YES){
[self dialog:@"Your are about to change the default color" @"Confirm Button"];
}
}
如果滑块在颜色选择器上移动,则此代码执行多次。
我找到了一个很好的解释这里发生的事情:
NSColorPanel阻塞鼠标up事件(第二个答案)除了在IB中取消选中colorwell的连续状态复选框外,底层类(NSColorPanel)还需要通过编程将其setContinuous设置为NO。这允许colorwell在每个动作中只调用一次action方法。