NSWindow 调整大小指示器不可见

NSWindow resize indicator not visible

如何为没有标题栏的 NSWindow 显示 resize indicators


我用故事板创建了一个新的 Xcode 项目(针对 Mac 应用程序)。我只是在外观中禁用了复选框Title Bar(它隐藏了NSwindow的标题栏)。

奇怪的是,禁用 TitleBar 后,当鼠标位于 window 边缘上方时,NSWindow 没有显示调整大小指示器。虽然如果我在边缘拖动它正在调整大小。

我猜这是一个错误,因为如果 window 可以通过将鼠标拖过边缘来调整大小,它必须显示调整大小指示器。


如图所示,用户拖动 window 后可以看到调整大小指示器,但许多用户会认为,由于没有调整大小指示器,所以 window 不是可调整大小。

我没有检查过这个,但你可以手动设置调整大小指示器。我想我会向 windows contentView 子类添加四个 NSTrackingAreas([=19= 的每一侧各一个,height/width 中只有几个像素)。 在 mouseEntered() 方法中,为适当的鼠标位置创建一个新的 NSCursor 对象。请记住,位置可能会改变,因此也请使用 mouseMoved() 方法。 在 mouseExited() 上重置光标。

同样,我还没有尝试过,但应该可以。

PS:别忘了提交雷达 ;)

我已通过子类化 NSWindow 并将 canBecomeKeyWindow 重写为 return 来解决此问题 YES:

#import "MyWindow.h"

@implementation MyWindow

- (BOOL)canBecomeKeyWindow {
    return YES;
}

@end

在这种情况下不更新调整大小游标看起来像 Apple 错误。文档说明 "The value of canBecomeKeyWindow property is YES if the window has a title bar or a resize bar, or NO otherwise.",因此我预计 canBecomeKeyWindow 将 return YES 用于可调整大小 window。但事实并非如此。

UPD:在 10.10.5 检查。希望您在 10.11 上会有相同的行为。