gpt4 book ai didi

cocoa - 如何让一个透明的NSView子类处理鼠标事件?

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

问题

我在透明的 NSWindow 上有一个透明的 NSView。 View 的 drawRect: 方法在 View 上绘制一些内容(NSImageNSBezierPathNSString),但是使其部分透明。

单击已绘制的 View 区域会调用常用的鼠标事件处理方法(mouseDown:mouseUp:)。

单击透明区域会将焦点集中到透明窗口后面的任何窗口。

我想让部分透明区域可单击,这样意外单击 View 上绘制的元素之间就不会导致窗口失去焦点。

<小时/>

已尝试的解决方案

  • 重写NSViewhitTest:方法。发现 hitTest: 仅在单击 View 的非透明区域时调用。
  • 重写NSViewopaqueAncestor方法。发现点击 View 任何部分时都没有调用这个。
  • drawRect:方法中使用[NSColorclearColor]填充透明区域的部分,并使用几乎但不是完全透明的颜色。这没有效果。
  • 使用 NSTrackingArea 类进行实验。这似乎只添加了对 mouseEntered:mouseExited:mouseMoved:cursorUpdate: 方法的支持,< em>不是 mouseUp:mouseDown:

最佳答案

我也遇到了同样的问题。看起来 [window setIgnoresMouseEvents:NO] 会做到这一点。

(至少在 Lion 上。参见 http://www.cocoabuilder.com/archive/cocoa/306910-lion-breaks-the-ability-to-click-through-transparent-window-areas-when-the-window-is-resizable.html )

关于cocoa - 如何让一个透明的NSView子类处理鼠标事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435685/

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