4

これを修正しようとする場所さえわかりませんが、誰かが私を正しい方向に向けることができるかもしれません. クリックするとポップオーバーを表示するステータス項目アプリケーションがあります。一部のユーザー操作では、変更やエラーについて警告/通知する NSUserNotification が生成されます。ただし、通知が表示されると、ポップオーバーの背後に表示されるため、それらがオーバーレイされると、ユーザーはその内容を読むことができません。

ポップオーバーの前に通知を強制的に表示する方法はありますか? 前に通知を注文するように。

編集: これは、ユーザーが間違った入力をした後、ポップオーバーの背後に隠れている通知の一部を示す図です。エラー通知を表示するためにポップオーバーを非表示にしたくありません。

ウィンドウで使用するものの種類であるmakeKeyAndOrderFront、activateIgnoringOtherAppsなどを試しましたが、どれもNSUserNotificationには適用されないため、機能しません。

編集 2: 呼び出されたときにポップオーバーがすべての前に表示されるようにするには、ポップオーバーで activateIgnoringOtherApps と becomeFirstResponder を使用しますが、それを取り除いてもポップオーバーの背後に通知が表示されることに注意してください。

編集 3: ポップオーバーは、ステータス バーのステータス項目に対して相対的に表示され [[self popover] showRelativeToRect:statusItem.view.bounds ofView:statusItem.view preferredEdge:NSMaxYEdge]; ます。クリックすると、ステータス項目はこれを行うメソッドを呼び出します。

- (void)openPopover:(id)sender {
if (![_popover isShown] | (_popoverIsClosing)) {
    [_preferencesWindow close];
    [NSApp activateIgnoringOtherApps:YES];
    [_popover becomeFirstResponder];
    [statusItemView setHighlighted:YES];
    [[self popover] showRelativeToRect:statusItem.view.bounds ofView:statusItem.view preferredEdge:NSMaxYEdge];
    [self performSelector:@selector(defaultTextField)];
    NSLog(@"popover opened");

} else {
    [_preferencesWindow close];
    [NSApp activateIgnoringOtherApps:NO];
    NSLog(@"popover closed");
    [_popover close];
    [_popover resignFirstResponder];
    [[NSApplication sharedApplication] hide: self];
    [statusItemView setHighlighted:NO];
}

}

助けてくれてありがとう。

4

1 に答える 1