如何使NSButton成为默认按钮,而不需要窗口标题栏

3
我希望将NSButton设置为“默认”按钮,这样当我按下“Enter”键时,该按钮会被点击(即调用其单击操作),我可以通过将其键等效设置为“\r”或在Xib中按下“Enter”键来实现。
但是,如果相同的窗口没有标题栏,则默认按钮不起作用。
我尝试通过编程方式使myWindow无边框。
[mywindow setStyleMask:NSBorderlessWindowMask];

尽管如此,这并没有帮助。

我的问题是如何将NSButton设置为“默认”按钮,而不需要将其添加到标题栏中。

谢谢。

2个回答

2

根据文档

使用 NSBorderlessWindowMask 样式的窗口不能成为关键或主要窗口,除非您实现 canBecomeKeyWindow 或 canBecomeMainWindow 并返回 YES。

继承 NSWindow 并实现 canBecomeKeyWindowcanBecomeMainWindow 可以使 NSButton 成为没有标题栏的 '默认' 按钮窗口。

@interface PBWindow : NSWindow

@end
@implementation PBWindow

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

将NSWindow类名设置为PBWindow:

输入图像说明

输出:

输出图像说明


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];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接