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

时间:2014-06-19 04:57:58

标签: objective-c macos cocoa nswindow

我正在尝试使用设置为“NSBorderlessWindowMask”的Windows样式掩码创建无边框窗口。 该窗口是子类,并为canBecomeKeyWindow和canBecomeMainWindow返回“Yes”。 我必须在左上角的视图中获得最小化按钮。 我正在使用“[NSWindow standardWindowButton:NSWindowMiniaturizeButton forStyleMask:NSBorderlessWindowMask]”获取最小化按钮对象的实例 并将其添加为子视图。 该按钮出现在nsview中。但是灰色并启用,也不是黄色。 一旦我点击它,它就会变黄。鼠标悬停在“最小化”按钮中出现的“ - ”未进入。 我尝试了[按钮设置突出显示:是],它实际上显示为已点击。 我添加了跟踪区域以使鼠标悬停。 任何帮助都会有所帮助。

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

2 个答案:

答案 0 :(得分:0)

尝试致电

[_minButton setNeedsDisplay:YES];

在方法的最后

答案 1 :(得分:0)

这对我有用。它是一个黑客,但它确实有效。

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

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