用户交互在scrollview中启用了子视图

时间:2012-12-04 13:29:55

标签: uiscrollview touch-event childviewcontroller

我有一个包含ContainerView的ScrollView。 ContainerView包含另一个用户应该可以在其中平移的视图。

scrollView仅滚动垂直,“containerView内的视图”可在所有方向上平移。 这就是我所拥有的

self.scrollView.contentSize = CGSizeMake(1024,1440);
self.modelController = [self.storyboard instantiateViewControllerWithIdentifier:@"LCProduct3DViewController"];
self.modelController.meshIdentifier = self.meshIdentifier;
[self addChildViewController:self.modelController];
self.modelController.view.frame = self.threeDView.bounds;
[self.threeDView addSubview:self.modelController.view];

接下来发生的事情是,modelController视图中的触摸事件以及modelControler视图之外但在scrollview边界内的触摸事件似乎正在相互影响。 我玩了

self.scrollView.canCancelContentTouches = NO;
self.scrollView.delaysContentTouches = NO;

但尚未找到可行的解决方案。

任何想法?

提前致谢

1 个答案:

答案 0 :(得分:1)

可以在其他地方找到: 诀窍是子类化scrollView并覆盖hitTest方法,如下所示:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
    UIView* result = [super hitTest:point withEvent:event];

    if ([result isKindOfClass:[GLKView class]]) {
        self.scrollEnabled = NO;
    } else {
        self.scrollEnabled = YES;
    }
    return result;
}

这样 - 如果内部视图的hittest为正,滚动视图的滚动将被禁用,只有内部视图才能获得该事件。