我有一个子类NSView
,它与窗口内容区域的边缘对齐,即视图占据了窗口的整个区域。
在该自定义内部,NSView
我安装了一个NSTrackingArea
也与视图边缘对齐的,以跟踪鼠标移动和进入/退出事件。
当我在视图内单击鼠标并在窗口外拖动时,一旦鼠标与窗口边框相交,光标就会变成调整大小的形状(就像我将鼠标悬停在窗口边框上一样)并保持该形状,无论我拖动到哪里 -窗内或窗外 - 直到我松开鼠标按钮。
我在许多应用程序中也观察到了这个错误,甚至在 Apple 自己的应用程序中也是如此。例如,在 Safari 中,如果您单击页面的背景并拖动到窗口外,则光标会停留在调整大小模式。
的选项标志NSTrackingArea
似乎不会影响该错误。如果我不添加NSTrackingArea
.
这真的很烦人,有解决方法吗?
这是我的代码:
- (void)updateTrackingAreas {
if (_trackingArea != nil) {
[self removeTrackingArea:_trackingArea];
}
NSRect trackingFrame = [self bounds];
_trackingArea = [[NSTrackingArea alloc]
initWithRect:trackingFrame
options:(NSTrackingAreaOptions)(NSTrackingMouseMoved | NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways)
owner:self
userInfo:nil];
[self addTrackingArea:_trackingArea];
}