2017-04-13 53 views
0

我有一个嵌套在另一个NSScrollView中的NSScrollView应用程序。我希望用户能够使用双指滑动滚动内部滚动视图,并使用三个手指滚动外部滚动视图。可以使用不同手势滚动的嵌套NSScrollView?

我想我会需要以某种方式配置每个滚动视图拒绝与错误的手指数量触摸,但我不知道如何做到这一点。

回答

0

我想通了!诀窍在于内部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; 
    } 
} 
- (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; 
    } 
}