2

私たちはメニューバーアイテムアプリを開発しています.の下に表示NSAlertされる 内にアラートを表示するカテゴリを書きたいです.NSPopoverNSStatusItem

これまでのところ、カテゴリは次の新しいメソッドを実装しています。

- (void) runAsMenuItemPopUpWithCompletionBlock:(NSAlertCompletionBlock)block {

    // Get content view of NSAlert
    NSView *alertContentView = [self.window contentView];

    // Ask the menu item to show the view as a NSPopOver
    [[GFMenuItem sharedInstance] popOverView:alertContentView];

    // (...) Handle response with callback
}

しかし、アラートを開く

NSAlert *alert = [NSAlert alertWithMessageText:@"Learn more?" defaultButton:@"Learn more" alternateButton:@"Cancel" otherButton:nil informativeTextWithFormat:@"Do you want to view detailed information?"];
[alert runAsMenuItemPopUpWithCompletionBlock:nil];

次の視覚化が得られます。

NSPopover の NSAlert

問題は、表示されるように設定されていない 3 番目の空のボタンであるヘルプ ボタンとチェックボックスです。それらが設定されていない場合、それらを取り除く方法について何か考えはありますか?

4

1 に答える 1

1

呼び出し[alert layout]て手動レイアウト処理をトリガーできることがわかりました。表示するように設定されていないボタンは非表示になります。

修正方法:

- (void) runAsMenuItemPopUpWithCompletionBlock:(NSAlertCompletionBlock)block {

    // Trigger the layout processing and get content view of NSAlert
    [self layout];
    NSView *alertContentView = [self.window contentView];

    // Ask the menu item to show the view as a NSPopOver
    [[GFMenuItem sharedInstance] popOverView:alertContentView];

    // (...) Handle response with callback
}
于 2013-05-01T14:30:52.790 に答える