gpt4 book ai didi

objective-c - mouseDragged 未在 NSView 的框架外调用

转载 作者:太空狗 更新时间:2023-10-30 03:55:21 27 4
gpt4 key购买 nike

我很难理解为什么当鼠标位于 View 之外时,为什么会为我的一个 NSView 子类调用 mouseDragged 而不会为另一个子类调用。

子类 1 以编程方式添加到 NSWindow,然后将其作为子窗口添加到主应用程序窗口。当鼠标在 View 内单击并拖动时,mouseDragged 会继续被调用,即使鼠标超出 View 框架也是如此。这就是我想要发生的事情。

子类 2 在 XIB 文件中分配给应用程序主窗口中的自定义 View 对象。在这种情况下,mouseDragged 事件仅在鼠标停留在 View 内时触发。

有什么明显的我遗漏的吗?

最佳答案

我经历过类似的事情,但它是每个窗口中的相同 NSView 子类。一个(在父窗口中)按预期工作。另一个(在子窗口中)仅在鼠标悬停在 View 上时才会看到 mouseDragged。

原来的原因是有一个 NSImageView 与有问题的 View 在同一 View 中,但重叠了它。因为 NSImageView 只在其边界的一部分绘制图像,所以这从来都不是问题,但事实证明这是导致 View 跟踪出现问题的原因。

我调整了添加 NSImageView 的方式,将其放置在 subview 的底部:

[parentView addSubview:myImageView positioned:NSWindowBelow relativeTo:nil];

有问题的 View 也已经在 parentView 中,所以 addSubview: 将 myImageView 添加到有问题的 View 之上。

这为我解决了这个问题。

关于objective-c - mouseDragged 未在 NSView 的框架外调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12914350/

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