单击NSView

Eri*_*ner 11 cocoa objective-c

我有一个NSView包含多个子视图.其中一个子视图是透明的,并且位于顶部.

我需要能够点击这个视图到下面的子视图(以便下面的视图获得第一响应者状态),但所有鼠标事件都卡在顶视图上(alpha是1,因为我在其中绘制内容 - 所以它应该只点击透明区域).

我实际上期望这个工作,因为通常情况下.怎么了?

fig*_*ump 15

这是另一种方法.它不需要创建一个新的窗口对象,并且比上面的findNextSiblingBelowEventLocation:方法更简单(并且可能更有效).

- (NSView *)hitTest:(NSPoint)aPoint
{
    // pass-through events that don't hit one of the visible subviews
    for (NSView *subView in [self subviews]) {
        if (![subView isHidden] && [subView hitTest:aPoint])
            return subView;
    }

    return nil;
}
Run Code Online (Sandbox Code Playgroud)