gpt4 book ai didi

cocoa - 拖动时未在嵌套 View 上调用 NSView mouseEntered - 黑客攻击是唯一的选择吗?

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

我有一个带有嵌套 NSView 的 NSView,如果我不拖动鼠标,则使用 NSTracking 区域在所有 subview 上触发鼠标事件...很好。

但是当我从父 NSView 拖动到子 NSView 上时,鼠标事件不会被触发,然后我让它们响应事件的唯一方法是通过黑客攻击,这感觉很脏。

NSView *hit = [self findViewUnderPoint:loc];
if (hit != nil)
{
if (hit != last)
{
[last mouseExited:event]; // This looks terrible to me
} else {
[hit mouseEntered:event]; // This looks terrible to me
}
last = hit;
}

如果你注释掉上面的代码, subview 事件就不会被触发,如果你把它留在里面,它们就会......但我直接调用它们。

我上传了一个视频,首先向您展示它是如何工作的,然后是拖动(使用我的技巧) - 我还包含了我的源代码。

我理想地追求“正确的方式”这样做

https://www.dropbox.com/s/b6ps8tz0jvg2gwy/Designable.zip?dl=0

最佳答案

Handling Mouse Dragging Operations 中所述,有两种方式实现拖动。您的解决方案使应用程序的正常事件循环短路,您必须调用 mouseEntered:mouseExited:。如果您不想这样做,请实现具有其他缺点的三方法方法。

关于cocoa - 拖动时未在嵌套 View 上调用 NSView mouseEntered - 黑客攻击是唯一的选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42494052/

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