如果从子视图中拖入,NSView 会丢失 mouseMoved/mouseDragged

Ale*_*lex 5 cocoa objective-c nsview

A = 父 NSView;B = 子 NSView;

B 有一个小的 NSTrackingArea;B是A的一个小子视图;

如果在空白区域中移动、单击、拖动,A 将正确接收 mouseMoved 和 mouseDragged 事件。

如果我在 B 中单击并将鼠标超出其边界拖动到 A 中,则 A 不会收到任何 mouseMoved 或 mouseDragged 事件。

有人可以指出我可以做些什么来让超级视图 A 对这种阻力做出反应吗?

Jua*_*nmi 0

我观察到了这一点,并且能够通过执行以下操作来解决它:

  1. 创建一个 NSViewController 并将 viewA 设置为其“view”属性。
  2. 就我而言,我在视图控制器中实现了 mouseDragged,但您可以在视图上尝试并查看得到的结果。mouseEntered 和 mouseExited 在视图子类中实现。

提示:确保您根据需要更新跟踪区域边界。希望这可以帮助。