如何在没有标题栏的情况下将NSButton设置为默认值到其窗口

时间:2013-10-24 09:18:56

标签: objective-c cocoa nsbutton

我想将NSButton作为“默认”按钮,这样当我点击“Enter”键时,该按钮被点击(即其点击动作被调用),我可以通过设置其键来实现相当于'\ _'或在Xib中点击'Enter'键。

但是如果同一窗口没有标题栏,则默认按钮不起作用。

我试过让myWindow无边界地进行无边框

[mywindow setStyleMask:NSBorderlessWindowMask];

仍然无济于事。

所以我的问题是如何将NSButton作为“默认”按钮,而不使用标题栏到它的窗口。

感谢。

2 个答案:

答案 0 :(得分:0)

在下面以编程方式尝试: -

NSRect myRect = NSMakeRect(0.0, 0.0, 1, 1);
NSButton *defaultButton = [[NSButton alloc] initWithFrame:myRect];

[defaultButton setKeyEquivalent:@"\r"];
[defaultButton setTarget:self];
[defaultButton setAction:@selector(yourActionMethod:)];
[[self view] addSubview:defaultButton];
[defaultButton release];

答案 1 :(得分:0)

来自documentation

  

使用NSBorderlessWindowMask的窗口无法成为密钥或主密钥,   除非你实现canBecomeKeyWindow或canBecomeMainWindow   返回YES

子类NSWindow并实施canBecomeKeyWindowcanBecomeMainWindow以使NSButton成为“默认”按钮,不带标题栏窗口。

@interface PBWindow : NSWindow

@end
@implementation PBWindow

-(BOOL)canBecomeKeyWindow
{
    return YES;
}
@end  

将NSWindow类名设置为PBWindow:

enter image description here

输出:

enter image description here