繁体   English   中英

以编程方式向 nsview 添加关闭按钮

[英]Programmatically add a close button to nsview

我正在尝试创建具有设置为“NSBorderlessWindowMask”的窗口样式掩码的无边界窗口。 该窗口被子类化并为 canBecomeKeyWindow 和 canBecomeMainWindow 返回“Yes”。 我必须在左上角的视图中只显示最小化按钮。 我正在使用“[NSWindow standardWindowButton:NSWindowMiniaturizeButton forStyleMask:NSBorderlessWindowMask]”获取最小化按钮对象的实例并将其添加为 subview 。 该按钮存在于 nsview 中。 但是变灰并启用并且也不是黄色。 一旦我点击它,它就会变成黄色。 并且在鼠标悬停时,最小化按钮中出现的“-”没有打开。我尝试了 [button setHighlighted:YES] ,它实际上显示为单击。 我添加了跟踪区域以获得鼠标悬停。

_minButton = [NSWindow standardWindowButton:NSWindowMiniaturizeButton forStyleMask:NSBorderlessWindowMask];
[_minButton setFrameOrigin:NSMakePoint(_minButton.frame.origin.x + 7, _minButton.frame.origin.y)];
[_minButton setTarget:self.view.window];
[_minButton setAction:@selector(miniaturize:)];
[self.view addSubview:_minButton];
NSTrackingArea* trackingArea = [[NSTrackingArea alloc]
                                initWithRect:[_minButton bounds]
                                options:NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways
                                owner:self userInfo:nil];
[_minButton addTrackingArea:trackingArea];

- (void)mouseEntered:(NSEvent *)theEvent{
 [[_minButton cell]setHighlighted:YES];
}

- (void)mouseExited:(NSEvent *)theEvent{
[[_minButton cell]setHighlighted:NO];
}

试着打电话

[_minButton setNeedsDisplay:YES];

在方法结束时

这对我有用。 这是一个黑客,但它奏效了。

- (void)windowDidBecomeKey:(NSNotification *)notification {

[_minButton highlight:YES];
[_minButton highlight:NO];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM