单击NSControl时未调用mouseDown事件,甚至在子类NSView上也没有调用

时间:2013-01-23 18:15:39

标签: cocoa nsevent

如何让当前的NSControl点击NSWindow?我在NSWindowController上有一个鼠标按下事件,-(void)mouseDown:(NSEvent *)theEvent {
但是当我点击位于NSWindow上的NSControls时,我根本没有得到鼠标停止事件。   我甚至将NSControls子类化为自定义NSViews,但是当我点击内部时,我也没有收到他们的鼠标按下事件。我将setAcceptsTouchEvents添加到yes并调用了AcceptFirstResponder,但它没有帮助。令人惊讶的是,当我点击NSWindow而不是任何NSControls时,我得到了mousedown事件。我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

试试这个

 - (void) mouseDown:(NSEvent *)theEvent
{
if ( ([theEvent modifierFlags] & NSCommandKeyMask) != 0)
{
    [self setFloatValue:100.0f];
    [self.target performSelector:self.action withObject:self];
}
else
    [super mouseDown:theEvent];
}

编辑:

目标应该是实现该方法的类实例。因此,例如,如果您的app委托中有一个连接到名为sliderReport的滑块的IBAction,请执行以下操作:

   [self sendAction:@selector(sliderReport:) to:[NSApp delegate]];