2016-11-21 38 views
1

我打開了一個NSPopover,如果用戶在應用程序的其他位置單擊,彈出窗口關閉。如何通過關閉NSPopover來使鼠標事件持續存在?

但問題是,目前在彈出窗口關閉過程中會消耗mouseDown事件。

是否有可能仍然有mouseDown事件通過應用程序,但也關閉彈出?

回答

0

您可以繼承window s s view對象。 我在Storyboard文件中做了這個。

在那裏,執行mouseDown()方法。在那裏,你可以創建一個通知,在你需要了解鼠標事件的項目中的一個點上可以接收到該通知。

由於「根視圖」捕獲幾乎所有的mouseDown()事件,因此您必須對它們進行過濾以便僅在顯示彈出窗口時對通知作出響應。

不要忘記在實施結束時致電super.mouseDown()

1

我有這個問題,所以我們改爲使用NSPopoverBehaviorSemitransient作爲行爲類型。它不再盜取mouseDown:,我們只是添加了一些手動關閉彈出窗口的額外案例。