即使调用了所有正确的方法,NSView的上下文NSMenu也从未显示过

时间:2011-02-12 21:27:01

标签: objective-c cocoa nsview nsmenu nscollectionview

我有一个NSCollectionView,里面有一堆NSView个,垂直堆叠,看起来有点像UIKit的{​​{1}}。一切都按预期工作,除了一件事:

右键点击UITableView中的任何一个时,我希望我设置的NSViewNSMenu视图,但是唉 - 没有任何反应。

疯狂的部分是所有正确的方法被调用,完全如预期的那样:menu-rightMouseDown:,最后是-menuForEvent:

当我将任何对象设置为-menu的{​​{1}}时,NSMenu而不是调用,所以在我看来Apple上有一些失败事情的一面,就在要求delegate之间,并实际展示它。

有人能够对此有所了解吗?

提前致谢。

PS。对于它的价值,menuWillOpen:我手动显示(不依赖Apple的右键单击处理),显示}

编辑/更新/澄清

有问题的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就像魅力一样。

0 个答案:

没有答案