の のように見えるように、垂直に積み重ねられNSCollectionView
た多数ののがあります。1 つのことを除いて、すべてが期待どおりに機能します。NSView
UIKit
UITableView
のいずれかを右クリックするとNSView
、NSMenu
設定したビューが表示されると思いますmenu
が、残念ながら何も起こりません。
クレイジーな部分は、すべての適切なメソッドが呼び出されている-rightMouseDown:
こと-menuForEvent:
です-menu
。
オブジェクトを としてセットアップすると、NSMenu
が呼び出されないため、 Apple 側で、 を要求してから実際に表示するまでの間に、何かがフェイルオーバーするように思えます。delegate
menuWillOpen:
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
です。(この問題にはあまり関係ありません)
ちなみに、私のアプリケーションにはLSUIElement
がInfo.plist
設定さYES
れているため、メニュー バーや Dock アイコンは表示されません。ステータスバーにあり、NSStatusItem
クリックすると表示されるウィンドウがあります。
ビューの階層は次のとおりです。
MyWindow
=> contentView
=> NSScrollView
=>NSCollectionView
にはそのプロパティに接続されたサブクラスがあり、NSCollectionView
サブクラスにはそのプロパティに接続されたサブクラスがあります。サブクラスには、そのプロパティへの接続があります。最後になりましたが、これには 1 つがその中に座っています。NSCollectionViewItem
itemPrototype
NSCollectionViewItem
NSView
view
NSView
NSMenu
menu
NSMenu
NSMenuItem
NSCollectionViewItem
サブクラスとサブクラスはどちらもNSView
今のところ興味深いことは何もありません。それらは単なる空のサブクラスです。
のプロパティNSMenu
に接続されているNSView
のmenu
は、 を右クリックしたときに表示されるはずですがNSView
、明確にしておきたいことですが、実際には表示されません。
アップデート
この問題の原因はまだわかりNSCollectionView
ませんが、とにかく私がやろうとしていたことにはあまり適していなかったため、から「先に進む」ことにしましTDListView
た。