Objective c 为非子类NSButton分配单点和双击事件[如果重复,回答此问题]
如何在cocoa中为具有两个单独功能的NSButton分配单点和双击事件(无需对按钮进行子类化)应用程序可以为给定选择器提供一个Objective c 为非子类NSButton分配单点和双击事件[如果重复,回答此问题],objective-c,macos,cocoa,nsbutton,Objective C,Macos,Cocoa,Nsbutton,如何在cocoa中为具有两个单独功能的NSButton分配单点和双击事件(无需对按钮进行子类化)应用程序可以为给定选择器提供一个NSEvent。因此,只需修改您希望添加双击逻辑的方法以支持该事件,并使用其clickCount属性响应任意数量的连续单击,如下所示: - (void)someMethod:(id)sender { NSEvent *event = [NSApp currentEvent]; switch (event.clickCount) { cas
NSEvent
。因此,只需修改您希望添加双击逻辑的方法以支持该事件,并使用其clickCount
属性响应任意数量的连续单击,如下所示:
- (void)someMethod:(id)sender {
NSEvent *event = [NSApp currentEvent];
switch (event.clickCount) {
case 1:
//Handle a single click
break;
case 2:
//Handle a double click
break;
default:
break;
}
}
看看class.Override-(void)mouseUp:(NSEvent*)事件
方法
mouseUp:通知接收者用户已释放左键
鼠标按钮
下面将解决您的问题
@property (strong) IBOutlet NSButton *myButton;
然后,稍后将双重操作设置为您的按钮
[[self.myButton cell] setDoubleAction:@selector(showMsg:)];
[[self.myButton cell] setTarget:self];
不,不,不。我是说使用该方法的主体来解决多次鼠标单击的问题,但是更改按钮发送的操作以添加NSEvent参数。无需子类化。我们是否使用
-(iAction)方法:(NSEvent*)事件来代替-(iAction)方法:(id)发送方?
?这里,我已经回答了。希望它比我的评论更清楚。引发错误:-[NSButton clickCount]:无法识别的选择器发送到实例0x100411d00
您确定已正确分配操作吗?我在示例代码中使用了iAction而不是void是的。但是另一个问题。。。如果双击,则返回single click和doubleclick eventsHm,我很担心这一点。您可能需要付出艰苦的努力,使用NSTimer来管理某些单击间隔并对其作出响应。有没有不进行子类化的方法?NSButtonCell没有setDoubleAction:
[[self.myButton cell] setDoubleAction:@selector(showMsg:)];
[[self.myButton cell] setTarget:self];