最小化/小型化cocoa NSWindow无标题栏

时间:2015-10-09 18:37:29

标签: objective-c xcode macos cocoa nswindow

我被困住了!显然......因为我在这里发帖提问。

我已经为我的OS X / cocoa应用程序构建了自己的自定义窗口控件。关闭按钮效果很好 - 没问题。当我禁用标题栏时,最小化按钮根本不起作用。

enter image description here

因此,当标题栏像上面的图像一样打开并且我点击此方法时,最小化工作正常:

ViewController.h

@interface ViewController : NSViewController {

    - (IBAction)minimize:(id)sender;        
    @property (strong) IBOutlet NSButton *btn_minimize;

}
@end

ViewController.m

@implementation ViewController

    - (void)viewDidLoad {
        [super viewDidLoad];
    }

    - (IBAction)minimize:(id)sender {
      [[NSApp mainWindow] performMiniaturize:self];
    }

    -(IBAction)terminate:(id)sender {
        [NSApp terminate:self];
    }
@end

然后,如果我禁用标题栏,则同样的方法停止工作。没有错误,没有。我试过了两个:[[NSApp mainWindow] miniaturize:nil];[[NSApp mainWindow] performMiniaturize:self];。两者都没有效果。实际上......如果标题栏打开,两者都有效。但是一旦我把它关掉,就不会工作。

titlebar turned off

app with no title bar

思考/评论?

哦,我正在使用Storyboard,Xcode 7,我的目标是10.10并使用10.11 SDK,如果这很重要的话。

提前致谢。

1 个答案:

答案 0 :(得分:0)

就我而言,我想完全删除标题栏并通过其他方式(例如:键分配)触发小型化。

我发现需要确保窗口样式掩码包含 NSMiniaturizableWindowMask 才能使 NSWindow::miniaturize 生效。