單擊按鈕時顯示一個彈出菜單。問題是,當菜單打開時,計時器不再起作用:NSMenu阻塞計時器/全局事件監視器/ etc
顯示菜單:
[_menu popUpMenuPositioningItem:nil atLocation:point inView:nil];
我的定時器(彈出前調用)不再發送郵件的按鈕被點擊後, 。
[NSTimer scheduledTimerWithTimeInterval:0.50
target:self
selector:@selector(myMethod:)
userInfo:nil
repeats:YES];
也曾嘗試[NSEvent addGlobalMonitorForEventsMatchingMask ..],甚至CGEventTapCreate。什麼都不會被調用
如何使彈出窗口不阻塞/模態?我知道這是可能的,我已經看到另一個應用程序這樣做。感謝您的任何想法。
謝謝,就是這樣,儘管我必須將它設置爲NSEventTrackingRunLoopMode。我覺得很奇怪,儘管我的NSEvent addGlobalMonitorForEventsMatchingMask:雖然不起作用,因爲我認爲它可以在同一個runloop上工作。 – Wesley 2013-03-05 22:37:40
那麼,首先,addGlobalMonitor ...應該用於監視其他應用程序中的事件。如果計時器在同一個應用程序中觸發,我認爲它無論如何都不會傳遞給該方法。 addLocalMonitor ...:方法可能工作,但我不確定NSTimer的內部機制。 addLocalMonitor ...的Apple Reference Docs:明確聲明「只有通過應用程序sendEvent:方法分派的事件纔會傳遞給您的處理程序」。我不確定NSTimer是否在內部使用該方法。但我很想知道! – JiuJitsuCoder 2013-03-06 15:30:38