向前/通过UIGesture(滑动)到兄弟视图

时间:2014-11-24 19:57:07

标签: objective-c uiscrollview uigesturerecognizer uitouch uiswipegesturerecognizer

让我们假设以下设置:

enter image description here

有一个仅水平滚动,透明UIScrollView(带蓝色背景和红色边框的矩形)和无数个UIImageView个实例(红色方块)是同一个{{1}的子视图}( UIView )。

self.view正被

带到前面
UIScrollView
包含[self.view bringSubviewToFront:scrollView] 中的

应实现以下目标:UIViewController应接收左/右滑动手势以水平滚动,而UIScrollView隐藏UIImageViews应接收滑动手势,方向向上/ down,添加如下:

UIScrollView

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeUpGestureHandler:)]; swipeUpGesture.direction = UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown; [imageView addGestureRecognizer:swipeGesture]; 未涵盖UIImageView时,这种情况有效,但当UIScrollView位于所述视图前时显然不起作用。

总结一下,UIScrollView应该向上/向下转发向上/向下滑动事件/手势到特定的基础UIScrollView,但仍然会收到常规的左/右滑动事件/水平滚动的手势。

根据我在文档中看到的内容,如果UIImageView中包含UIImageViews,则很容易解决 - 但是,这在此设置中是不可能的,而且我是非常肯定必须有一个解决方案来解决这个问题。

任何提示都表示赞赏,谢谢。

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法。虽然我无法将向上/向下滑动手势转发到滚动视图后面的图像视图,但我现在添加了向上/向下方向滚动视图的手势识别器。在手势识别器动作中,我确定窗口内手势的点,并用零事件测试窗口对这些点的第一个视图。在自定义滚动视图中,我覆盖了hittest消息以返回NO以及空事件,因此相应的imageview最终将成为标识符。一旦我将imageview放在手势点的滚动视图后面,我就可以在我的imageview上执行相应的操作。

我不确定这是否是这个问题的最佳解决方案,但是我无法在经过数小时的调查和实验后建立更好的解决方案。这种设置可能有点不寻常,因此很棘手。如果您有任何要添加的内容,仍然可以欣赏您的输入。