突出显示时,NSStatusItem标题不会更新

时间:2014-10-10 04:21:03

标签: objective-c cocoa nsstatusitem

我制作了一个小应用程序,在状态栏/菜单栏中显示CPU温度。它工作正常,但它突出显示时完全停止更新(当我点击它时)。当我点击其他地方时再次工作(突出显示被删除。)。有没有办法确保应用程序在单击它时突然更新(突出显示模式)。

我使用NSTimer每5秒获取一次温度。即使我删除了setHighlight方法,如果我点击状态栏应用程序,应用程序也会停止更新。

2 个答案:

答案 0 :(得分:1)

你应该使用NSInvocation。

NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(reload_Live_Data)]];
[invocation setTarget:self];
[invocation setSelector:@selector(reload_Live_Data)];

timer=[NSTimer timerWithTimeInterval:5 invocation: invocation repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

-(void) reload_Live_Data
{
    [_statusItem setTitle:@“xyz”];
    [_statusItem setIcon:image];
}

答案 1 :(得分:0)

您可以在帖子How to add animated icon to OS X status bar?

中使用解决方案

然而,您可以使用GCD而不是使用NSTimer。您可以随意更新图像或标题。