可以使用不同手势滚动的嵌套 NSScrollViews?

Nested NSScrollViews that can be scrolled with different gestures?

我有一个应用 NSScrollView 嵌套在另一个 NSScrollView 中。我希望用户能够使用两指滑动滚动内部滚动视图,并使用三个手指滚动外部滚动视图。

我想我需要以某种方式配置每个滚动视图以拒绝手指数量错误的触摸,但我不确定该怎么做。

我想通了!诀窍是子类化内部 ScrollView 并强制它拒绝具有一定数量触摸的手势,将它们转发给父滚动视图:

- (void)scrollWheel:(NSEvent *)event {
    if (_forwardScrollToParent) {
        // [self.enclosingScrollView scrollWheel:event];
    } else {
        [super scrollWheel:event];
        [self recordInteractionWithThisTab];
    }
}

- (void)touchesBeganWithEvent:(NSEvent *)event {
    [super touchesBeganWithEvent:event];
    NSInteger nTouches = [event touchesMatchingPhase:NSTouchPhaseTouching inView:self].count;
    if (nTouches == 3) {
        _forwardScrollToParent = YES;
    } else {
        _forwardScrollToParent = NO;
    }
}