我有一个NSSlider对象(连续模式打开),它连接到outlet方法
- (IBAction)UpdateValueFromSlider:(id)sender {
[self performSelector:@selector(OutputData) withObject:nil afterDelay:0.02];
}
Run Code Online (Sandbox Code Playgroud)
每当移动滑块时(而不仅仅是当鼠标上移时),它都会被调用.
但是,该方法OutputData本身仅在鼠标上升时调用,而不是在我使用滑块并将其拖动时保持鼠标向下.
为什么会发生这种情况,OutputData每当滑块更新时,如何稍微延迟调用?
滑块的跟踪循环可能是在不同的运行循环模式下运行循环 - 可能NSEventTrackingRunLoopMode.该performSelector:withObject:afterDelay:方法仅在运行循环运行时触发NSDefaultRunLoopMode; 正如该方法的文档所说,如果您希望消息在其他运行循环模式中出列,则应该使用performSelector:withObject:afterDelay:inModes:.对于inModes:参数,您可以传递NSArraywith NSDefaultRunLoopMode和NSEventTrackingRunLoopModein; 或者甚至更好,可能,你可以简单地通过NSRunLoopCommonModes,这应该涵盖你的基础,无论Apple将来如何处理运行循环模式.
| 归档时间: |
|
| 查看次数: |
157 次 |
| 最近记录: |