0

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

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

4

1 回答 1

1

我想到了!诀窍是对内部进行子类化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;
    }
}
于 2017-04-26T01:57:43.940 回答