从另一个视图将滚动手势传递给 UIScrollView

Posted

技术标签:

【中文标题】从另一个视图将滚动手势传递给 UIScrollView【英文标题】:Passing scroll gesture to UIScrollView from another view 【发布时间】:2010-09-15 19:05:55 【问题描述】:

我确实有一个具有 UIScrollView 的视图,并且在它上面有一个显示一些文本的视图。 当用户在包含文本的视图上滑动时,UIScrollView 不会滚动。如何以将滑动手势传递给 UIScrollView 的方式使该视图透明。

谢谢

【问题讨论】:

【参考方案1】:

你可以设置

myTextView.userInteractionEnabled = NO;

或者,如果您使用 Interface Builder 创建视图,那里有一个名为“启用用户交互”的复选框,只需取消选中即可。

【讨论】:

这将禁用该文本视图中的按钮。它有一个幻灯片播放/停止按钮。【参考方案2】:

查看UIView hitTest Method

返回包含指定点的视图层次结构(包括其自身)中接收器的最远后代。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

【讨论】:

【参考方案3】:

在自定义视图的 -touchesXXXX:withEvent: 方法中,调用它们的超级方法来转发触摸事件。

例如:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

  // forward touchesBegan to super class
  [super touchesBegan:touches withEvent:event];

  ... 
  // process touchesBegan for this view
 

对 touchesMoved、touchesEnded 和 touchesCancelled 执行相同的操作。

【讨论】:

以上是关于从另一个视图将滚动手势传递给 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

iOS 不会将触摸转发到以下视图

将垂直滚动手势传递给下面的 UITableView

如何将平移手势从滚动视图转发到另一个滚动视图

有没有办法在 SwiftUI 中复制手势或处理它们并将它们传递给子视图?

iOS:将手势传递给下面的视图

如何将控制从一个手势识别器传递给另一个