右键单击NSView子视图不能在nsimageview上工作

时间:2013-08-07 12:58:05

标签: macos cocoa nsview right-click nsimageview

我必须有两个与视图相关联的子视图。一个是处理右键单击的透明视图,另一个是带有nsimageview子视图的nsview。出于某种原因,右键单击可以在superview的任何部分上工作,但nsimageview中的部分除外。透明视图位于另一个视图的顶部,但右击鼠标事件未触发。

1 个答案:

答案 0 :(得分:3)

我终于通过继承图像视图并重写命中测试方法来返回nil来解决它。完整实施如下:

@implementation TTBaseImageView

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code here.
    }

    return self;
}

- (void)drawRect:(NSRect)dirtyRect
{
    // Drawing code here.
    [super drawRect:dirtyRect];
}

-(BOOL)isFlipped
{
    return YES;
}

-(BOOL)acceptsFirstResponder
{
    return NO;
}

-(BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
   return NO;
}

-(NSView *)hitTest:(NSPoint)aPoint
{
    return nil;
}
@end