如何通过关闭NSPopover使鼠标事件持续存在?

时间:2016-11-21 22:43:58

标签: cocoa mouseevent nspopover

我打开了NSPopover,如果用户点击了应用中的其他位置,则弹出窗口会关闭。

但问题是目前在弹出关闭过程中消耗了mouseDown事件。

是否仍然可以将mouseDown事件传递给应用程序,还可以关闭popover?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,因此我们更改为使用NSPopoverBehaviorSemitransient作为行为类型。它不再窃取mouseDown:,我们只是添加了一些额外的案例来手动关闭弹出窗口。

答案 1 :(得分:0)

您可以继承window s contentViewController s view对象的子类。 我在故事板文件中这样做了。

在那里,实现mouseDown()方法。在那里,您可以创建一个通知,可以在项目中的某个位置接收您需要了解鼠标事件的通知。

由于“根视图”捕获了几乎所有mouseDown()个事件,因此您必须对其进行过滤,以便仅在显示弹出窗口时响应通知。

请勿忘记在执行结束时致电super.mouseDown()