(注: 質問は以前にも出されており、1 年以上前に決定的ではない結果が得られました。願わくば、もう少し詳しく知り、解決できますか?)
ダブルクリックしたときに NSCollectionItem の上に NSPopover を表示しようとしています。私の NSCollectionView は正しく設定され、入力を受け取ります。
(コードをコピーして他の NSView サブクラスに貼り付けると、問題なく動作します。NSCollectionView には、混乱しているように見えるものがあります。)
コード:
BIECollectionViewItem.h
#import <Cocoa/Cocoa.h>
@class BIEAppDelegate;
@interface BIECollectionViewItem : NSView {
IBOutlet NSPopover *popover;
}
@end
BIECollectionViewItem.m
#import "BIECollectionViewItem.h"
@implementation BIECollectionViewItem
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code here.
}
return self;
}
- (void)drawRect:(NSRect)dirtyRect
{
// Drawing code here.
}
- (void)mouseDown:(NSEvent *)theEvent {
[super mouseDown: theEvent];
if([theEvent clickCount] == 2){
[popover showRelativeToRect: [self bounds] ofView: self preferredEdge: NSMaxYEdge];
}
}
@end
mouseDown イベントにログステートメントを追加すると、イベントが発生していることが確認できます。しかし、NSPopover は表示を拒否します。
NSPopover を NSCollectionView の上に表示する方法を知っている人はいますか?