2

我必须有两个与视图关联的子视图。一个是处理右键单击的透明视图,另一个是带有 nsimageview 子视图的 nsview。出于某种原因,右键单击适用于除了 nsimageview 中的部分之外的超级视图的任何部分。透明视图位于另一个视图之上,但未触发鼠标右键事件。

4

1 回答 1

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
于 2013-09-12T05:02:53.293 回答