在MacOS应用程序中没有响应的流量按钮

时间:2015-10-23 16:02:53

标签: macos cocoa nsview nsbutton first-responder

我正在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_];

我不知道为什么按钮没有响应。 有人可以帮忙吗? 提前致谢

0 个答案:

没有答案