Macos 可以使用不同手势滚动的嵌套NSScrollView?
我有一个应用程序,它的Macos 可以使用不同手势滚动的嵌套NSScrollView?,macos,cocoa,nsscrollview,nsresponder,trackpad,Macos,Cocoa,Nsscrollview,Nsresponder,Trackpad,我有一个应用程序,它的NSScrollView嵌套在另一个NSScrollView中。我希望用户能够使用两个手指滑动滚动内部scrollview,并使用三个手指滚动外部scrollview 我想我需要以某种方式配置每个scrollview,以拒绝使用错误手指数的触摸,但我不知道如何做到这一点。我找到了答案!诀窍是将内部的ScrollView子类化,并强制它拒绝具有一定数量触摸的手势,将它们转发到父ScrollView: - (void)scrollWheel:(NSEvent *)event {
NSScrollView
嵌套在另一个NSScrollView
中。我希望用户能够使用两个手指滑动滚动内部scrollview,并使用三个手指滚动外部scrollview
我想我需要以某种方式配置每个scrollview,以拒绝使用错误手指数的触摸,但我不知道如何做到这一点。我找到了答案!诀窍是将内部的
ScrollView
子类化,并强制它拒绝具有一定数量触摸的手势,将它们转发到父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;
}
}