4

「Applicationisagent(UIElement)」がyesに設定されているアプリケーションのインターフェースを再表示するにはどうすればよいですか?

アプリを初めて起動したときにインターフェースが表示されますが、ウィンドウを閉じてアプリのアイコンをクリックしても何も起こりません。OS Xがアプリを再起動しようとしているためだと思いますが、それを防ぐメカニズムがいくつかあります。私が欲しいのはこれです:

  • アプリのアイコンを最初にクリックすると、アプリが起動し、インターフェースが表示されます。
  • インターフェイスが閉じられている場合(ただし、アプリはまだバックグラウンドで実行されている場合)、アイコンをクリックすると、インターフェイスが表示されます。
  • インターフェイスがすでに表示されている場合は、アイコンをクリックするだけでウィンドウが前面に移動します。
4

2 に答える 2

2

これを行う方法は次のとおりです。

+ initialize1)アプリのデリゲートにメソッドを追加します

+ (void)initialize
{
    // check if there is a running instance of your app
    NSArray * apps = [NSRunningApplication runningApplicationsWithBundleIdentifier:[[NSBundle mainBundle] bundleIdentifier]];
    if ([apps count] > 1)
    {
        //post notification to it to update inteface
        [[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"updateInterface" object:nil];
        //quit current instance of the app, coz you don't need two apps running continiously
        exit(0);
    }
}

2) 通知用にアプリを登録する

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(updateInterface:) name:@"updateInterface" object:nil];
}

updateInterface3)メソッドを追加

- (void)updateInterface:(NSNotification *)aNotification
{
    // handle your interface here
    // ....

    // move your app forward
    [NSApp activateIgnoringOtherApps:YES];
}
于 2012-11-12T12:04:04.510 に答える
2

ここで答えを見つけました:Macアプリケーションを閉じ(上部の赤い十字をクリック)、ドックアイコンをクリックして再度開きます

- (BOOL)applicationShouldHandleReopen:(NSApplication*)theApplication
    hasVisibleWindows:(BOOL)flag
{
    [self.window makeKeyAndOrderFront:self];
    return YES;
}
于 2012-11-12T22:13:04.100 に答える