我正在尝试在状态栏菜单中使用 NSProgressIndicator(不确定)。我使用 NSView 对象作为菜单项的视图,然后对进度指示器进行子视图以显示它。但是每当我尝试调用 startAnimation: 时,什么都没有发生。当我尝试在普通的 NSWindow 上做同样的事情时,它可以完美地工作,只是在 menuitem 内时不行。
我对可可和objective-c都是新手,所以我可能忽略了一些“明显”的东西,但我已经搜索了很多解决方法但没有成功。我发现一些关于菜单项的内容在显示时无法更新,您需要使用无边框窗口。但我无法在任何文档中确认这一点。
编辑:
好的,现在几乎可以工作了。当使用 setUsesThreadedAnimation: 并从一个 MenuDelegate 的 menuWillOpen 中创建一个新线程。该线程运行一个本地方法:
-(void) doWork(NSProgressIndicator*) p{
[p startAnimation:self];
}
这将在打开菜单时随机(?)启动进度指示器。如果我startAnimation:
不经过就直接调用doWork:
(仍然使用新线程),它永远不会起作用。进度条不会setUsesThreadedAnimation:
为动画创建自己的线程吗?