gpt4 book ai didi

cocoa - 如何用CALayer实现NSView上的鼠标点击?

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

我有一个圆形的自定义无边框 NSWindow。为此,我使用自定义 NSView 来绘制实心圆。

鼠标点击窗口内容矩形内的透明像素会直接穿过窗口到达其后面的任何应用程序。实心圆圈内的点击被我的应用程序拦截。到目前为止一切顺利。

问题是,使用以下行,上述行为会发生变化,并且窗口内容矩形内的所有点击都会被拦截,无论是否透明像素:

[circleView setWantsLayer:YES];

有没有办法让 CALayer 实例的透明像素上的点击通过窗口/ View /层到达其背后的应用程序?

本质上与下面描述的问题完全相同(只是该解决方案并非在所有情况下都有效,因为它不支持动画):

http://www.cocoabuilder.com/archive/cocoa/235281-clicking-through-nsview-with-calayers.html

最佳答案

我不完全确定这是否适用于图层支持的 View ,但可能的解决方案是在您的圆形 View 子类上覆盖 - (NSView *)hitTest:(NSPoint)aPoint 并检查是否aPoint 位于圆的路径内。如果它在圆圈之外,则从该方法返回 nil 应该会导致点击被传递。

关于cocoa - 如何用CALayer实现NSView上的鼠标点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5379336/

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