gpt4 book ai didi

cocoa - 如何保证NSTimer始终在NSView中运行?

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

我在自定义 NSView 中有一个 NSTimer。计时器设置为始终以特定间隔重复,一旦触发,计时器应更新一堆 View 参数。

这一切都工作正常,但是,当 View 失焦时(即右键单击工具栏以拉出菜单),计时器会延迟并且在 View 失焦期间不会触发。

我的问题是,即使 View 失去焦点,如何确保计时器始终触发并更新 View 参数?

最佳答案

当您执行某些事件(例如显示上下文菜单)时,运行循环将进入事件跟踪模式。这意味着仅处理某些事件。要让计时器在运行循环处于此模式时触发,请将 NSEventTrackingRunLoopMode 包含在计时器的模式列表中。

NSTimer *timer = [NSTimer timerWithTimeInterval:theInterval target:theTarget selector:theSelector userInfo:theUserInfo repeats:shouldRepeat];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSEventTrackingRunLoopMode];

关于cocoa - 如何保证NSTimer始终在NSView中运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4654498/

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