2

ボタンをクリックするとポップアップメニューが表示されます。問題は、そのメニューが開いていると、タイマーが機能しなくなることです。

メニューを表示するには:

[_menu popUpMenuPositioningItem:nil atLocation:point inView:nil];

ボタンがクリックされた後、タイマー (ポップアップの前に呼び出される) がメッセージを送信しなくなりました。

[NSTimer scheduledTimerWithTimeInterval:0.50
                                 target:self
                               selector:@selector(myMethod:)
                               userInfo:nil
                                repeats:YES];

[NSEvent addGlobalMonitorForEventsMatchingMask ..] と CGEventTapCreate も試しました。何も呼び出されません。

ポップアップをブロックしない/モーダルにするにはどうすればよいですか? これが可能であることは知っていますが、別のアプリがそれを行うのを見たことがあります。アイデアをありがとう。

4

1 に答える 1

2

問題は、NSTimerが正しいモードで実行されていないことである可能性があります。NSRunLoopオブジェクトを作成して、現在の実行ループを取得してみてください。次に、メソッドaddTimer:forMode :(作成した実行ループオブジェクト内)を使用して、タイマーをNSModalPanelRunLoopModeに追加します。詳細については、Apple Docsを参照してください:https ://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSRunLoop_Class/Reference/Reference.html

于 2013-03-05T21:03:40.403 に答える