我有一个NSScrollView
,它的文档视图是一个NSView
名为 MasterPage 的子视图。在 MasterPage 上,我有一堆(取决于用户输入)子视图(来自名为 Page 的类)。它们以网格格式布局。我正在尝试捕获NSPoint
鼠标单击 MasterPage 的过程。它在没有子视图的情况下工作,但如果单击的点在子视图的区域内,则超级视图不会注册它。有没有办法做到这一点?我希望这是有道理的。
红色区域在 superview 的 .m 文件中注册鼠标单击。四个子视图没有。
我有一个NSScrollView
,它的文档视图是一个NSView
名为 MasterPage 的子视图。在 MasterPage 上,我有一堆(取决于用户输入)子视图(来自名为 Page 的类)。它们以网格格式布局。我正在尝试捕获NSPoint
鼠标单击 MasterPage 的过程。它在没有子视图的情况下工作,但如果单击的点在子视图的区域内,则超级视图不会注册它。有没有办法做到这一点?我希望这是有道理的。
红色区域在 superview 的 .m 文件中注册鼠标单击。四个子视图没有。
在您的MasterPage
类中,您可以覆盖NSView's
-hitTest:
方法并让它返回self
而不是Page
子视图之一。请参阅事件处理指南:鼠标和平板电脑事件的路径。
在这个示例项目http://www.markdouma.com/developer/SubviewSuperview.zip中,您可以查看日志调用以查看NSView
接收事件的内容。如果按住 Alt/Option 键并单击,白色视图将覆盖-hitTest:
并返回自身,阻止灰色视图接收事件。