1

VoiceOver を使用して次のバグに遭遇しました。私は Cocoa プログラミングに慣れていないので、何か間違ったことをしているのか、それとも別の方法があるのか​​知りたいです。次のコードは、メニューバーにアイコンを配置し、1 つの項目を持つメニューを持っています。

VoiceOver (command-F5) をオンにしてアイコンをクリックすると、「メニュー (1 項目)」と表示されます。しかし、2回目(場合によっては3回目)以降、メニューは変わっていないのに「メニュー(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

Snow Leopard と Lion の両方でこの動作が見られます。何が与えられますか?

ありがとう!

4

0 に答える 0