Cocoa:关闭菜单前闪烁项目

时间:2013-01-25 13:12:05

标签: objective-c macos cocoa menu

当点击OSX上的菜单项时,该项目在菜单关闭前闪烁一次(开 - 关 - 关闭)。

我问自己,我怎么能模仿这种行为? (我使用NSCollectionView重新实现了一个菜单,选项和clic对项目都有效)

我试过2认为不起作用:

mouseOver = false;
[self drawRect:self.bounds];
mouseOver = true;
[self drawRect:self.bounds];

[[self window] performSelector:@selector(orderOut:) withObject:nil afterDelay:0.1];

mouseOver = false;
[self setNeedsDisplayInRect:self.bounds];
[self needsDisplay];
mouseOver = true;
[self setNeedsDisplayInRect:self.bounds];
[self needsDisplay];

[[self window] performSelector:@selector(orderOut:) withObject:nil afterDelay:0.1];

1 个答案:

答案 0 :(得分:0)

我选择了那个解决方案:

-(void)mouseDown:(NSEvent *)theEvent {
    [super mouseDown:theEvent];

    [self performSelector:@selector(blinkItemOnce:) withObject:[NSNumber numberWithBool:NO] afterDelay:0.0];
    [self performSelector:@selector(blinkItemOnce:) withObject:[NSNumber numberWithBool:YES] afterDelay:0.05];
    [[self window] performSelector:@selector(orderOut:) withObject:nil afterDelay:0.15];
}

-(void) blinkItemOnce:(NSNumber*) b {
    mouseOver = [b boolValue];
    [self setNeedsDisplayInRect:self.bounds];
    [self setNeedsDisplay:YES];
}