NSWindow调整指标不可见

时间:2015-10-16 10:45:07

标签: macos cocoa nsview nswindow

如果没有Titlebar,我如何向NSWindow显示resize indicators

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

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

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

image

从图像中可以看出,在用户拖动窗口后会看到调整大小指示符,但是很多用户会认为由于没有调整大小指示符,因此窗口不可调整大小。

2 个答案:

答案 0 :(得分:3)

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

#import "MyWindow.h"

@implementation MyWindow

- (BOOL)canBecomeKeyWindow {
    return YES;
}

@end

在这种情况下,不更新调整大小游标看起来像Apple bug。文档说明“如果窗口有标题栏或调整大小栏,则canBecomeKeyWindow属性的值为YES,否则为NO。”,我希望canBecomeKeyWindowYES返回 String str = "BLIS"; String strArray[] = str.split(""); for (int i = 0; i < strArray.length; i++) { System.out.println(strArray[i]); } 以获取可调整大小的窗口。但事实并非如此。

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

答案 1 :(得分:1)

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

同样,我没有尝试过,但它应该有效。

PS:不要忘记为此提供雷达;)