我有一个NSCollectionView
,里面有一堆NSView
个,垂直堆叠,看起来有点像UIKit
的{{1}}。一切都按预期工作,除了一件事:
右键点击UITableView
中的任何一个时,我希望我设置的NSView
是NSMenu
视图,但是唉 - 没有任何反应。
疯狂的部分是所有正确的方法被调用,完全如预期的那样:menu
,-rightMouseDown:
,最后是-menuForEvent:
。
当我将任何对象设置为-menu
的{{1}}时,NSMenu
被而不是调用,所以在我看来Apple上有一些失败事情的一面,就在要求delegate
之间,并实际展示它。
有人能够对此有所了解吗?
提前致谢。
PS。对于它的价值,menuWillOpen:
我手动显示(不依赖Apple的右键单击处理),显示1>} 。
有问题的menu
位于点击NSMenu
时显示的popUpMenuPositioningItem:atLocation:inView:
内,如CoverSutra / TicToc /你有什么。 NSCollectionView
NSWindow
子类中的一些代码:
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
,因此它不会显示菜单栏或Dock图标。它位于状态栏中,并且在单击LSUIElement
时显示一个窗口。
视图层次结构如下:
Info.plist
=> YES
=> NSStatusItem
=> MyWindow
contentView
有一个NSScrollView
子类连接到其NSCollectionView
属性,NSCollectionView
子类有一个NSCollectionViewItem
子类连接到其itemPrototype
子类属性。
反过来,NSCollectionViewItem
子类的NSView
属性已连接view
。
最后但并非最不重要的是:NSView
有一个NSMenu
位于其中。
截至目前,menu
子类和NSMenu
子类都没有任何意义,它们只是空子类。
连接到NSMenuItem
的{{1}}属性的NSCollectionViewItem
是右键单击NSView
时应显示的内容,但我希望我已明确说明:它实际上没有显示出来。
我仍然不知道是什么导致了这个问题,但我已经决定从NSMenu
'继续',因为它不适合我试图做的事情,我现在使用TDListView
就像魅力一样。