gpt4 book ai didi

macos - 为什么我的可点击框需要双击才能使点击计数等于 1?

转载 作者:行者123 更新时间:2023-12-03 17:42:42 24 4
gpt4 key购买 nike

我有一个 NSStatusItem,它有一个 NSMenuItem,其中包含一个自定义 NSView。这个 NSView 包含 3 个可点击的 NSBox subview (实现了 mouseDown 事件)。奇怪的是,当我运行应用程序并在按下“播放”按钮后立即输入 statusItem 时,我必须单击 NSBox 一次(这将返回 clickCount = 1)。当我进入另一个窗口或 View 并返回到 statusItem 并尝试单击其中一个 NSBox 时,什么也没有发生。当我双击这些项目时,操作就会发生,并且 clickCount 也等于 1。

-(void)mouseDown:(NSEvent *)theEvent {
NSLog(@"ClickCount: %ld", theEvent.clickCount);
if ([delegate respondsToSelector:@selector(boxClicked:)]) {
[delegate boxClicked:self];
}
}

有谁知道为什么会发生这种情况以及我该如何解决这个问题?

编辑(完整的 m 文件代码):

#import "ClickableBox.h"

@implementation ClickableBox

@synthesize delegate;

- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
return YES;
}

- (void)viewDidMoveToWindow {
[self addTrackingRect:[self bounds] owner:self userData:NULL assumeInside:NO];
}

-(void)mouseEntered:(NSEvent *)theEvent {
if ([delegate respondsToSelector:@selector(boxRolledOver:)]) {
[delegate boxRolledOver:self];
}
}

-(void)mouseExited:(NSEvent *)theEvent {
if ([delegate respondsToSelector:@selector(boxExited:)]) {
[delegate boxExited:self];
}
}

-(void)mouseDown:(NSEvent *)theEvent {
NSLog(@"ClickCount: %ld", theEvent.clickCount);
if ([delegate respondsToSelector:@selector(boxClicked:)]) {
[delegate boxClicked:self];
}
}

- (void)dealloc {
[delegate release];
[super dealloc];
}

@end

最佳答案

听起来您确实还需要这样做:

- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
return YES;
}

以便在您的自定义中接受第一个鼠标单击事件 NSView .

可能还有其他问题,但无法从代码片段中看出。

关于macos - 为什么我的可点击框需要双击才能使点击计数等于 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com