NSWindow调整指标不可见

问题描述 投票:10回答:2

如何显示resize indicators对于没有标题栏一个NSWindow?


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

但奇怪的是,禁用标题栏后,NSWindow没有显示调整指标,而鼠标是窗口边缘的上方。虽然如果我在边缘拖动它被调整。

我想这是一个错误,因为如果该窗口可以通过在边缘拖动鼠标来调整大小,它必须显示调整大小的指标。


image

因为它可以在图像中可以看出,调整大小的指标被视为用户拖动窗口后,但许多用户会认为,因为没有调整大小的指标,该窗口不调整大小。

macos cocoa nsview nswindow
2个回答
3
投票

我已经通过继承NSWindow和压倒一切的canBecomeKeyWindow返回YES修复了这个问题:

#import "MyWindow.h"

@implementation MyWindow

- (BOOL)canBecomeKeyWindow {
    return YES;
}

@end

没有更新调整光标在这种情况下看起来像苹果的bug。文件指出,“canBecomeKeyWindow属性的值是YES如果窗口有一个标题栏或调整大小酒吧,或NO否则,”因此,我希望canBecomeKeyWindow将返回YES为可调整大小的窗口。但事实并非如此。

UPD:经过上10.10.5。我们希望,你将有10.11相同的行为。


1
投票

我没有检查这一点,但你可以手动设置的调整指标。我想我会添加四个NSTrackingAreas到windows内容查看子类(一个窗口的每边,高度/宽度只有几个像素)。在的mouseEntered()方法,创建适当的鼠标位置的新NSCursor对象。请记住,位置可能会改变,所以使用的mouseMoved()方法为好。上的mouseExited()复位光标。

同样,我没有试过,但它应该工作。

PS:不要忘记提交有关该雷达;)

© www.soinside.com 2019 - 2024. All rights reserved.