Objective-C为什么有些鼠标事件会发生,有些则不会

时间:2012-10-18 09:25:45

标签: objective-c macos mouseevent

我的View控制器到目前为止工作正常,除了一件事: 我有几个MouseEvents和一些火,其他没有。

- (void)mouseWasHeld: (NSTimer *)tim {
    **// this works not**
}

- (void) mouseMoved:(NSEvent*)someEvent {
    **// this works not**
}

-(void)mouseDown:(NSEvent *)event {
    // this works
}

-(void)mouseDragged:(NSEvent *)event {
    // this works
}

-(void)mouseUp:(NSEvent *)event {
// this works
}

我不明白为什么两个事件不会发出任何线索?

非常感谢 罗纳德

2 个答案:

答案 0 :(得分:2)

  1. mouseWasHeld:似乎是其他任何地方的计时器设置的回调。在代码中查找@selector(mouseWasHeld:),找出未安排计时器的原因。
  2. 仅当使用mouseMoved:的窗口is told to do so时才会调度
  3. -[NSWindow setAcceptsMouseMovedEvents:]

答案 1 :(得分:1)

除非您添加跟踪区域,否则不会调用

mouseMoved:

 NSTrackingAreaOptions options = NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways;
 NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:self.frame options:options owner:self userInfo:nil];
 [self addTrackingArea:trackingArea];