我当前的NSbutton子类看起来像这样,不幸的是使用委托:
-(voID)awakeFromNib { [self setTarget:self]; [self setAction:@selector(buttonAction:)];}-(voID)mouseDown:(NSEvent *)theEvent { [_delegate button:self ispressed:YES]; [super mouseDown:theEvent];}-(voID)buttonAction:(ID)sender { [_delegate button:self ispressed:NO];}解决方法 按钮可以设置为使用-sendActionOn ::两次发送鼠标事件::
[self.button sendActionOn: NSleftMouseDownMask | NSleftMouseUpMask];
处理键盘事件同样似乎更难.如果您不需要事件同时从按钮中删除突出显示,则可以覆盖NSbutton的-performKeyEquivalent:这样它将例如发送动作两次.
- (BOol) performKeyEquivalent: (NSEvent *) anEvent{ if ([super performKeyEquivalent: anEvent]) { [self sendAction: self.action to: self.target]; return YES; } return NO;}
如果你确实需要同时使用该事件,我认为你需要使用自定义按钮单元格(通过创建NSbuttonCell的子类并在初始化程序中设置按钮的单元格)并覆盖它的-highlight:withFrame:inVIEw ::
- (voID)highlight:(BOol)flag withFrame:(NSRect)cellFrame inVIEw:(NSVIEw *)controlVIEw{ [super highlight: flag withFrame:cellFrame inVIEw:controlVIEw]; if (flag) { // Action hasn't been sent yet. } else { // Action has been sent. }}总结
以上是内存溢出为你收集整理的macos – 具有鼠标向下/向上和向下/向下键的NSButton全部内容,希望文章能够帮你解决macos – 具有鼠标向下/向上和向下/向下键的NSButton所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)