0

ドックバウンスの停止に関するこの質問とは正反対の問題があるようです。

アプリでドックアイコンを継続的にバウンスさせることができません。

私もドックアイコンを繰り返しバウンスするのは嫌いですが、この場合、ユーザーが私のアプリを起動できないことに気付いていない場合、データの追跡に何時間もかかる可能性があります。

これが、アプリデリゲートapplicationWillFinishLaunching:メソッドに配置したコードです。

if (!AXAPIEnabled()) {        // I'm checking that Accessibility is turned on

    NSAlert *alert = [[NSAlert alloc] init];
    [alert setAlertStyle:NSCriticalAlertStyle];
    [alert setMessageText:@"Lapsus cannot run."];
    [alert addButtonWithTitle:@"Open Accessibility Prefs..."];
    [alert addButtonWithTitle:@"Quit"];
    [alert setInformativeText:@"Lapsus needs \"Enable access for assistive devices\" in the Accessibility pane of System Preferences to be turned on."];

    [NSApp activateIgnoringOtherApps:YES];
    int attentionrequest = [NSApp requestUserAttention:NSCriticalRequest];

    NSInteger returnValue = [alert runModal];
    ....
    [NSApp cancelUserAttentionRequest:attentionrequest];
}

requestUserAttention行を削除してみました。

runModal呼び出しの直前、最初のものなど、さまざまな場所にrequestUserAttention行を配置してみました。

activateIgnoringOtherApps行を削除してみました。

私が何をしても、ドックアイコンは一度バウンドしてから停止します。

ユーザーは、私がアプリを前面に表示しているのを目にする可能性がありますが、適切なタイミングでクリックすると、アクティブなアプリケーションが重大なエラーメッセージを非表示にする可能性があります。

だから私は、ドックが隠されていても、何かが正しくないことを彼らが知っているようなものが欲しいのです。

私はこれをMacOSX10.5Leopardで構築しています。私が間違っていることについて何か考えはありますか?または、Leopardは継続的にバウンスするドックアイコンをサポートしなくなりましたか?

アップデート:

私はメソッド呼び出しをapplicationWillFinishLaunchingに入れていました:

それをapplicationDidFinishLaunching:に入れ、activateIgnoringOtherApps:呼び出しを削除するとすぐに、必要に応じて機能しました。

しかし、私の質問は、「アプリを前面に表示し、ドックアイコンをバウンスさせることはできますか?最初の回答からは、理由はわかりませんが、そうではないようです。

アップデート:

考えていなかったので、なぜかわかりませんでした。フォーカスを盗むということは、ドックが必要なものを手に入れることを意味するということが私に指摘されたので、それは完全に理にかなっています。

結論

ユーザーの注意を引く場合は、[NSApp activateIgnoringOtherApps:YES]を使用しないでください。

4

1 に答える 1

2

activateIgnoringOtherAppsを送信すると、基本的に自分の通知を却下することになります。

于 2009-10-16T16:07:39.557 に答える