我正在MacOS上创建一个应用程序,我遇到了这个问题。我正在使用自定义流量按钮。当窗口未激活时,如果我点击它们没有响应,我得到的是窗口变为活动状态。 我怎么能解决这个问题,即使窗口不是活动窗口,按钮也会响应。 我将它们添加到自定义视图中,这是我拥有的: 我的观点:
json_encode
现在添加按钮我在窗口实现中执行此操作(我将仅发布一个按钮的代码)
@implementation TrafficView
- (id)init {
if ((self = [super init])) {
trackingArea_.reset([[NSTrackingArea alloc]
initWithRect:[self bounds]
options:(NSTrackingMouseEnteredAndExited |
NSTrackingActiveAlways |
NSTrackingInVisibleRect)
owner:self
userInfo:nil]);
[self addTrackingArea:trackingArea_.get()];
}
return self;
}
- (void)dealloc {
[super dealloc];
}
- (BOOL)acceptsFirstResponder {
return YES;
}
- (BOOL)acceptsFirstMouse:(NSEvent*)theEvent {
return YES;
}
- (void)mouseEntered:(NSEvent*)event {
mouseInside_ = YES;
for (NSView* view in self.subviews)
[view setNeedsDisplay:YES];
}
- (void)mouseExited:(NSEvent*)event {
mouseInside_ = NO;
for (NSView* view in self.subviews)
[view setNeedsDisplay:YES];
}
- (BOOL)_mouseInGroup:(NSButton *)button {
return mouseInside_;
}
@end
请注意,我的自定义视图(trafficView_)已添加到NSThemeFrame类self.frameView
trafficView_.reset([[TrafficView alloc] init]);
[self.frameView addSubview:trafficView_];
// close button is declared as NSButton
closeButton_ =
[NSWindow standardWindowButton:NSWindowCloseButton
forStyleMask:NSTitledWindowMask];
[trafficView_ addSubview:closeButton_];
我不知道为什么按钮没有响应。 有人可以帮忙吗? 提前致谢