4

の のように見えるように、垂直に積み重ねられNSCollectionViewた多数ののがあります。1 つのことを除いて、すべてが期待どおりに機能します。NSViewUIKitUITableView

のいずれかを右クリックするとNSViewNSMenu設定したビューが表示されると思いますmenuが、残念ながら何も起こりません。

クレイジーな部分は、すべての適切なメソッドが呼び出されている-rightMouseDown:こと-menuForEvent:です-menu

オブジェクトを としてセットアップすると、NSMenuが呼び出されないため、 Apple 側で、 を要求してから実際に表示するまでの間に、何かがフェイルオーバーするように思えます。delegatemenuWillOpen:menu

誰でもこれに光を当てることができますか?

前もって感謝します。

PS。価値があるのは、NSMenu(Apple の右クリック処理に依存せずに) 手動で提示する方法popUpMenuPositioningItem:atLocation:inView: 示されていることです。

編集/更新/明確化

NSCollectionView問題は、CoverSutra/TicToc/what have youNSWindowのように、 をクリックすると表示される の中にあります。サブクラスNSStatusItemのコード:MyWindow NSWindow

- (void)awakeFromNib {
    [self setStyleMask:NSBorderlessWindowMask];
    [self setExcludedFromWindowsMenu:YES];
}

- (BOOL)canBecomeMainWindow {
    return YES;
}

- (BOOL)canBecomeKeyWindow {
    return YES;
}

- (BOOL)isMovable {
    return NO;
}

- (void)presentFromPoint:(NSPoint)point {
    point.y -= self.frame.size.height;
    point.x -= self.frame.size.width / 2;
    [self setFrameOrigin:point];
    [self makeMainWindow];
    [self makeKeyAndOrderFront:self];
}

presentFromPoint:は、好きな場所から表示するために使用する方法です。私の場合は のすぐ下からNSStatusItemです。(この問題にはあまり関係ありません)

ちなみに、私のアプリケーションにはLSUIElementInfo.plist設定さYESれているため、メニュー バーや Dock アイコンは表示されません。ステータスバーにあり、NSStatusItemクリックすると表示されるウィンドウがあります。

ビューの階層は次のとおりです。

MyWindow=> contentView=> NSScrollView=>NSCollectionView

にはそのプロパティに接続されたサブクラスがあり、NSCollectionViewサブクラスにはそのプロパティに接続されたサブクラスがあります。サブクラスには、そのプロパティへの接続があります。最後になりましたが、これには 1 つがその中に座っています。NSCollectionViewItemitemPrototypeNSCollectionViewItemNSViewviewNSViewNSMenumenuNSMenuNSMenuItem

NSCollectionViewItemサブクラスとサブクラスはどちらもNSView今のところ興味深いことは何もありません。それらは単なる空のサブクラスです。

のプロパティNSMenuに接続されているNSViewmenuは、 を右クリックしたときに表示されるはずですがNSView、明確にしておきたいことですが、実際には表示されません。

アップデート

この問題の原因はまだわかりNSCollectionViewませんが、とにかく私がやろうとしていたことにはあまり適していなかったため、から「先に進む」ことにしましTDListViewた。

4

0 に答える 0