gpt4 book ai didi

objective-c - 当与另一个事件重叠时,NSEvents 会通过 NSView

转载 作者:行者123 更新时间:2023-12-03 16:45:56 24 4
gpt4 key购买 nike

在我的自定义 NSWindow 类中,我有一个父 View (设置为窗口的 contentView)和一个 subview 。在我的应用程序中,我已将 subview 附加到我的 subview 中,这些 subview 似乎都完美地接收了 mouseDown 响应。但是,我希望在单击按钮时将面板滑入 subview 上方(但仍位于父 View 内)(我在应用程序中将其称为 sliderOverlay)。将 SlideOverlay subview (随后包含更多 subview )添加到 subview 后,我无法单击其任何元素,因为它们都会传递到较低的 subview 。

一些细节:

  • 我尝试将slidingOverlay覆盖为 subview 和父 View 的 subview ,两者都会导致 subview 接收NSEvents。
  • slidingOverlay 看起来是非不透明的(半透明?不确定 Apple 是否有一个术语),尽管它清晰可见、有图层支持并且具有纯色。或许这就是起源?我对 Cocoa 还很陌生。
  • 所有三个 View 实际上都是分层支持的(Parent、Child 和 sliderOverlay)。
  • 所有三个 View 都是以编程方式创建的。
  • 我尝试重写 (NSView*)hitTest:(NSPoint)aPoint for Child,并将 NSEvent 转发到 sliderOverlay 的 subview 。然而,这种方法看起来有点像 hack,需要我预先确定哪个 sliderOverlay subview 将接收事件。我希望所有的slidingOverlay subview 都能够获得点击,忽略所有较低的 subview ,同时slidingOverlay是可见的。

简单来说,有一个 NSWindow,其 contentView 为 Parent。父级有一个带有 subview (NSButtons、下拉列表、自定义类等)的 subview ,所有 subview 都接收点击。在当前状态下,slidingOverlay 作为 subview 附加到 Child(根据我对事物的掌握,它应该可以正常工作),并且可以切换其可见性。当将 mouseDown NSEvents 切换到 SlideOverlay 时,其 subview 将被传递到 Child 的底层 subview - 例如,单击点 100,400 将导致下拉菜单(Child 的直接 subview ,但位于可见的 slipOverlay 层下方)展开。

我想问题是 - 当 NSView (包含 subview )位于另一个 View 之上时,如何将其视为“实体”且可点击,以支持其父 View 或底层 View ?

最佳答案

看起来附加一个新的 NSWindow (替换 sliderOverlay)是有效的(有利于进一步分层 Child)。不过,仍然不知道为什么 NSEvents 在附加一定数量的 subview 后会穿透......

关于objective-c - 当与另一个事件重叠时,NSEvents 会通过 NSView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25853493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com