ステータスバーメニュー内で NSProgressIndicator (不確定) を使用しようとしています。menuitem のビューとして NSView オブジェクトを使用し、進行状況インジケーターをサブビューして表示します。しかし、進行状況のために startAnimation: を呼び出そうとするたびに、何も起こりません。通常の NSWindow でまったく同じことを実行しようとすると、完全に機能しますが、メニュー項目内では機能しません。
私はココアとobjective-cの両方に慣れていないので、「明らかな」ものを見落としている可能性がありますが、回避策をかなり探しましたが、成功しませんでした。メニュー項目が表示されている間は更新できず、代わりにボーダーレス ウィンドウを使用する必要があることがわかりました。しかし、私はこれをどのドキュメントでも確認できませんでした。
編集:
わかりました、ほとんど動作します。setUsesThreadedAnimation: を使用し、MenuDelegate の menuWillOpen から新しいスレッドを作成する場合。このスレッドは、ローカル メソッドを実行します。
-(void) doWork(NSProgressIndicator*) p{
[p startAnimation:self];
}
これにより、メニューを開くときに進行状況インジケーターがランダム (?) ベースで開始されます。startAnimation:
通過せずにdoWork:
(まだ新しいスレッドを使用して)直接呼び出すと、機能しません。setUsesThreadedAnimation:
プログレスバーにアニメーション用の独自のスレッドを作成させませんか?