【问题标题】:forward UIGestures from subview to superview将 UIGestures 从子视图转发到父视图
【发布时间】:2014-10-04 17:36:05
【问题描述】:

我有这个视图层次结构:

绿色的 UIView 包含一些按钮。 蓝色的 UIView 是一个水平的 UIScrollView。

问题就在这里,当我在绿色视图上滑动时,它会捕获滑动并浪费它!

如何将手势从 greenView 转发到 blueView (scrollView)?所以 blueView 可以相应地滚动。

这里是示例。在真正的 greenView 中,背景颜色是清晰的。为了识别它的框架,我用 0.5 alpha 将它涂成绿色。

https://www.dropbox.com/s/5s3orvpg378dw29/forwardTouchSample.zip?dl=0

【问题讨论】:

  • 您能否再详细说明一下滑动绿色视图时想要达到的效果?
  • 绿色视图就像一个工具栏。 (清除颜色背景。为了清除,我将它涂成绿色!)它只是与 blueView 重叠。所以用户可以在它下面看到 blueView。用户在它上面滑动,所以蓝色视图应该在那个方向上滚动。我想将滑动手势从 greenView 转发到 blueView。所以蓝色视图可以滚动,就像没有绿色视图一样。
  • blueView 是启用了分页的滚动视图。用户滑动查看照片。
  • 我尝试复制您的问题,但无法复制!你能帮我复制你的问题吗?
  • @S1LENTWARRIOR 提供了示例代码。

标签: objective-c uiscrollview uigesturerecognizer uiresponder


【解决方案1】:

我找到了解决您问题的方法。

尝试将滑动手势添加到您的绿色视图中,并将每个手势的操作设置为选择上一张/下一张图像。

将以下代码附加到您共享的示例代码的ViewController 类的viewDidLoad 中:

UISwipeGestureRecognizer* gesturePrev = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(prev:)];
gesturePrev.direction = UISwipeGestureRecognizerDirectionRight;

[headerVC.view addGestureRecognizer:gesturePrev];

UISwipeGestureRecognizer* gestureNext = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(next:)];
gestureNext.direction = UISwipeGestureRecognizerDirectionLeft;

[headerVC.view addGestureRecognizer:gestureNext]; 

希望这会有所帮助!

【讨论】:

  • 感谢您的帮助。但这不是我要找的。如您所见,当您滚动时,图片会平滑地跟随您的手指,当到达某个点时,图片会发生变化。所以在这里我想当我在 greenView 上滚动时,scrollView 跟随我的手指,因此图片开始滚动。
  • 我正在寻找一种方法来防止 greenView 吞下 swipeGesture,以便underview 可以使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多