gpt4 book ai didi

macos - 执行选择器 : afterDelay: not being called until mouse up

转载 作者:行者123 更新时间:2023-12-03 16:52:16 24 4
gpt4 key购买 nike

我有一个 NSSlider 对象(连续模式开启),它连接到 socket 方法

- (IBAction)UpdateValueFromSlider:(id)sender {
[self performSelector:@selector(OutputData) withObject:nil afterDelay:0.02];
}

每当 slider 移动时(而不仅仅是当鼠标抬起时)都会根据需要调用它。

但是,方法 OutputData 本身仅在鼠标抬起时才会被调用,而如果我按住 slider 并拖动它,则不会调用该方法。

为什么会发生这种情况,以及如何在 slider 更新时稍微延迟地调用 OutputData

最佳答案

slider 的跟踪循环可能正在不同的运行循环模式下运行运行循环 - 可能 NSEventTrackingRunLoopModeperformSelector:withObject:afterDelay:仅当运行循环在 NSDefaultRunLoopMode 中运行时才会触发方法;正如该方法的文档所说,如果您希望消息在其他运行循环模式下出队,您应该使用 performSelector:withObject:afterDelay:inModes:反而。对于inModes:您可以传递 NSArray 参数与 NSDefaultRunLoopModeNSEventTrackingRunLoopMode在里面;或者甚至更好,也许,您可以简单地传递 NSRunLoopCommonModes ,无论 Apple 将来如何处理运行循环模式,它都应该涵盖您的基础。

关于macos - 执行选择器 : afterDelay: not being called until mouse up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35028510/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com