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



我有一个应用程序,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;
    }
}

最新更新