objective-c - 在 super View 上获取鼠标按下事件

标签 objective-c cocoa subview superview mousedown

我有一个 NSScrollView ,它的文档 View 是一个名为 MasterPage 的 NSView subview 。在 MasterPage 上,我有一堆(取决于用户输入) subview (来自名为 Page 的类)。它们以网格格式布局。我正在 try catch 鼠标在 MasterPage 上单击的 NSPoint 。它适用于没有 subview 的情况,但如果单击的点位于 subview 的区域内,则 super View 不会注册它。有没有办法做到这一点?我希望这是有道理的。

红色区域在 super View 的 .m 文件中注册鼠标单击。四个 subview 则不然。

The red area registers a mouse click in the superview's .m file. The four subviews do not.

最佳答案

在您的 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 接收事件。

enter image description here

关于objective-c - 在 super View 上获取鼠标按下事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7504917/

相关文章:

iphone - 在尝试添加 subview iphone SDK 的 switch 语句中混合 Objective C 和 C

ios - UIViewController 中的隐藏 subview

ios - UINavigationItem 标题

objective-c - NSOperationQueue 内的 NSOperation 导致应用程序卡住 waitUntilFinished :YES

objective-c - 在整个 NSTableView/NSOutlineView 的字体大小后动态改变行高

objective-c - 在不知道名称的情况下打开现有的 Search Kit 框架搜索索引

cocoa - 使 NSTextField 在以编程方式设置其字符串值时更新其绑定(bind)值

objective-c - 如何使可编辑的 TextField 在单击按钮时失去焦点?

macos - NSSecureTextField 隐藏光标

cocoa-touch - 如何访问嵌套的 UIScrollView 中的 subview