Ошибка VoiceOver в меню NSStatusItem - PullRequest
       9

Ошибка VoiceOver в меню NSStatusItem

1 голос
/ 30 декабря 2011

Я столкнулся со следующей ошибкой при использовании VoiceOver.Я новичок в программировании Какао, поэтому мне любопытно, если я делаю что-то не так или есть другой способ сделать это.Следующий код помещает значок в меню и имеет меню с 1 элементом.

Когда вы включаете VoiceOver (команда-F5) и нажимаете на значок, он говорит вам: «Меню (1 пункт)».Тем не менее, второй (или иногда третий) раз и после, он говорит «меню (0 пунктов)», даже если меню не изменилось.

#import <Cocoa/Cocoa.h>

int main(int argc, const char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSStatusItem *status_item;
    NSMenu *menu;

    // The application needs a main menu to run
    NSMenu *mainmenu = [[NSMenu alloc] init];
    [[NSApplication sharedApplication] setMainMenu:mainmenu];

    menu = [[NSMenu alloc] init];
    NSMenuItem *menuitem = [[NSMenuItem alloc] initWithTitle:@"Empty" action:nil keyEquivalent:@""];
    [menu addItem:menuitem];

    status_item = [[NSStatusBar systemStatusBar] statusItemWithLength:NSSquareStatusItemLength];

    NSImage *image = [[NSImage alloc] initWithContentsOfFile: @"/Library/Widgets/iTunes.wdgt/Images/repeat_one.png"];
    [status_item setImage:image];
    [status_item setMenu:menu];

    [NSApp run];

    [pool drain];
    return 0;   
}

Вы можете скомпилировать и запустить это с помощью:

gcc -o menubar -Wno-import main.m -lobjc -framework Cocoa && ./menubar

Я вижу это поведение как на снежном барсе, так и на льве.Любая идея, что дает?

Спасибо!

...