gpt4 book ai didi

ios - 如何阻止 UIView 中断 performSelector

转载 作者:行者123 更新时间:2023-11-28 17:38:58 25 4
gpt4 key购买 nike

我有一个方法,每 0.01 秒运行一次 performSelector 以不断更新图像。

-(void)setNeeds

[mag setNeedsDisplay];
[vc setNeedsDisplay];
[na setNeedsDisplay];
[wave setNeedsDisplay];
[mon setNeedsDisplay];

[self performSelector:@selector(setNeeds)
withObject:NULL
afterDelay:.01];

当有正常的用户交互时,这个更新就好了。但是,当用户在 UIViewPicker 上滑动值时,所有更新都会暂停,直到交互停止。同样的事情也会发生在重复设置的 NSTimer 对象上。

我希望有一种更一致的方法来执行连续 Action ,但解决这个问题也很重要。

最佳答案

这是一个相当常见的问题,因为使用 scheduledTimerWith... 创建的 NSTimer 可能会在用户交互时暂停。 Here is a similar question .正如您想象的那样,performSelector:..afterDelay:.. 方法在内部使用了一个 NSTimer。基本上,当您使用 scheduledTimerWith...performSelector:..afterDelay:.. 时,您的计时器会安排在 NSDefaultRunLoopMode 的运行循环中,这可能在用户与应用程序交互时暂停。解决方案是自己在运行循环中为 CommonModes 安排计时器,如下所示:

timer = [NSTimer timerWithTimeInterval:0.01 target:self selector:@selector(setNeeds) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

如果您反对为此函数管理自己的 NSTimer,那么您可以使用 performSelector:withObject:afterDelay:inModes: 函数。最后一个参数是一组运行循环模式,您可以在其中放置 NSRunLoopCommonModes

关于ios - 如何阻止 UIView 中断 performSelector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8897562/

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