我有一个 NSScrollView
,它的文档 View 是一个名为 MasterPage 的 NSView
subview 。在 MasterPage 上,我有一堆(取决于用户输入) subview (来自名为 Page 的类)。它们以网格格式布局。我正在 try catch 鼠标在 MasterPage 上单击的 NSPoint
。它适用于没有 subview 的情况,但如果单击的点位于 subview 的区域内,则 super View 不会注册它。有没有办法做到这一点?我希望这是有道理的。
红色区域在 super View 的 .m 文件中注册鼠标单击。四个 subview 则不然。
最佳答案
在您的 MasterPage
类中,您可以覆盖 NSView 的
-hitTest:
方法并让它返回 self
而不是 Page
subview 之一。请参阅Event Handling Guide: The Path of Mouse and Tablet Events .
在此示例项目中,http://www.markdouma.com/developer/SubviewSuperview.zip ,您可以观察日志记录调用以了解 NSView
接收事件。如果按住 Alt/Option 键并单击,白色 View 将覆盖 -hitTest:
并返回自身,从而阻止灰色 View 接收事件。
关于objective-c - 在 super View 上获取鼠标按下事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504917/