3

an をカスタマイズしたいので、現在は次のコードしかない (テスト目的で) をNSPopUpButton実装しました。CustomMenuItemView

- (void)drawRect:(NSRect)dirtyRect
{
    [[NSColor redColor] set];
    NSRectFill(dirtyRect);
}

NSMenuItemここで、に追加するたびNSMenumyPopUpButton.menu、ビューをカスタム ビューに設定します。

NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"Some title" action:NULL keyEquivalent:@""];
menuItem.view = [[CustomMenuItemView alloc] initWithFrame:NSMakeRect(0, 0, 100, 25)];

プログラムを実行してポップアップ ボタンを開くと、メニュー項目の選択が無効になっているように見えます (つまり、クリックしても何も起こりません)。

実際には無効になっていないと思います。イベントに応答しなくなっただけです。カスタム ビューにイベント処理を追加する必要がありますか? もしそうなら、どのように?

4

1 に答える 1

10

mouseUpメソッドを my に追加することで問題を解決しましたCustomMenuItemView

- (void)mouseUp:(NSEvent*) event
{
    NSMenu *menu = self.enclosingMenuItem.menu;
    [menu cancelTracking];
    [menu performActionForItemAtIndex:[menu indexOfItem:self.enclosingMenuItem]];
}
于 2012-01-17T13:05:36.390 に答える