【问题标题】:NSWindow resize indicator not visibleNSWindow 调整大小指示器不可见
【发布时间】:2016-01-15 02:15:15
【问题描述】:

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


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

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

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


从图中可以看出,用户拖动窗口后会看到resize指示符,但很多用户会认为,由于没有resize指示符,所以窗口无法调整大小。

【问题讨论】:

  • 你在设置鼠标跟踪区域吗?调整大小后是否更新鼠标跟踪区域?

标签: macos cocoa nsview nswindow


【解决方案1】:

我已通过子类化 NSWindow 并覆盖 canBecomeKeyWindow 以返回 YES 来解决此问题:

#import "MyWindow.h"

@implementation MyWindow

- (BOOL)canBecomeKeyWindow {
    return YES;
}

@end

在这种情况下不更新调整大小游标看起来像 Apple 错误。文档指出“canBecomeKeyWindow 属性的值是 YES,如果窗口有标题栏或调整大小栏,否则 NO。”,所以我希望 canBecomeKeyWindow 将返回 YES 用于可调整大小的窗口。但事实并非如此。

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

【讨论】:

    【解决方案2】:

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

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

    PS:别忘了在这方面提交雷达;)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 2015-04-18
      • 2012-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多