Macos 为什么我的可点击框需要双击才能获得等于1的点击次数?
我有一个NSStatusItem,它有一个包含自定义NSView的NSMenuItem。此NSView包含可单击的NSBox的3个子视图(实现了mouseDown事件)。奇怪的是,当我运行应用程序并在按下“播放”按钮后立即输入statusItem时,我只需单击NSBox一次(返回clickCount=1)。当我进入另一个窗口或视图并返回statusItem并尝试单击其中一个NSBox时,什么也没有发生。当我双击项目时,会发生操作,并且clickCount也等于1Macos 为什么我的可点击框需要双击才能获得等于1的点击次数?,macos,cocoa,nsmenuitem,mousedown,nsbox,Macos,Cocoa,Nsmenuitem,Mousedown,Nsbox,我有一个NSStatusItem,它有一个包含自定义NSView的NSMenuItem。此NSView包含可单击的NSBox的3个子视图(实现了mouseDown事件)。奇怪的是,当我运行应用程序并在按下“播放”按钮后立即输入statusItem时,我只需单击NSBox一次(返回clickCount=1)。当我进入另一个窗口或视图并返回statusItem并尝试单击其中一个NSBox时,什么也没有发生。当我双击项目时,会发生操作,并且clickCount也等于1 -(void)mouseDown
-(void)mouseDown:(NSEvent *)theEvent {
NSLog(@"ClickCount: %ld", theEvent.clickCount);
if ([delegate respondsToSelector:@selector(boxClicked:)]) {
[delegate boxClicked:self];
}
}
有人知道为什么会发生这种情况,以及我如何解决这个问题吗
编辑(完整的m文件代码):
听起来你也需要这样做:
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
return YES;
}
因此,第一次鼠标单击事件在您的自定义中被接受
可能还有其他问题,但无法从代码片段中判断。这可能是因为您的视图不是关键。您可以为NSMenu设置代理,并在
-menuWillOpen:
上调用[boxView.window makeFirstResponder:boxView]编码>使其成为关键。使其成为关键有帮助,但不是您描述的方式!无论如何谢谢你!!
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
return YES;
}