gpt4 book ai didi

cocoa - 鼠标事件通过 NSView 渗透

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

我有一个 NSView,它覆盖了其父窗口的内容 View 。该 View 有一个单击事件处理程序,可将其从内容 View 中删除。在这个观点之中,我还有另外一个观点。当我在此内部 View 中拖动鼠标时,鼠标事件不仅会应用于前面的 View ,还会应用于后面的 View 。此外,后面 View 中的光标也会显示出来。这与此处发生的问题相同:NSView overlay passes mouse events to underlying subviews?但那里的答案不适用于我的项目,因为我无法打开另一个窗口。

最佳答案

如果没有看到事件处理代码,很难知道发生了什么,但我怀疑您可能在实现中调用 super 的各种事件处理方法的实现。

NSViewNSResponder 的子类,因此默认情况下未处理的事件会沿着响应者链向上传递。 View 的 super View 是响应者链中的下一个对象,因此如果您在 -mouseDown: 的实现中调用 [super mouseDown:event],该事件将被传递到 super View 。

解决方法是确保您不会在事件处理程序中调用super的实现。

这是不正确的:

- (void)mouseDown:(NSEvent*)anEvent
{
//do something
[super mouseDown:event];
}

这是正确的:

- (void)mouseDown:(NSEvent*)anEvent
{
//do something
}

关于cocoa - 鼠标事件通过 NSView 渗透,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590763/

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