ios - UIScrollview,向下移动响应链

标签 ios uiscrollview uiimage first-responder

我会尽量保持简单。

我有一个带有大约 10 张图像的 UIScrollview。我目前拥有它,以便我可以触摸图像并将其拖动到 ScrollView 上。

我通过创建子类 UIImageview 和实现 touchesMoved 等来做到这一点。我仍然可以很好地 ScrollView ,但是当尝试过快地拖动图像时会出现问题。程序似乎首先检查 View 是否正在滚动,然后在 UIImage 类中触发 touchesMoved。

无论如何我可以切换它,以便首先检查是否触摸了图像,然后如果没有将响应传递到 ScrollView 。

任何帮助都会很棒。谢谢。

最佳答案

执行此操作的最简单方法是用一根手指移动图像,然后用两根手指 ScrollView 。

如果您使用的是 iOS 5,这将非常简单:

self.scrollView.panGestureRecognizer.minimumNumberOfTouches = 2;

如果你想支持旧版本的 iOS,你必须做更多的工作:

for (UIGestureRecognizer *gesture in self.scrollView.gestureRecognizers){
  if ([gesture isKindOfClass:[UIPanGestureRecognizer class]]){
    ((UIPanGestureRecognizer *)gesture).minimumNumberOfTouches = 2;
  }
}

如果您想对两者都使用单指手势,有几种方法可以实现。您可以将 UIPanGestureRecognizer 附加到每个 ImageView 。您可能需要使用 requireGestureRecognizerToFail: 消息告诉 ScrollView 自己的 UIPanGestureRecognizer 服从 ImageView 识别器。

另一种方法是将 ScrollView 的 UIPanGestureRecognizer 委托(delegate)设置为您创建的实现 gestureRecognizer:shouldReceiveTouch: 方法的对象。在该方法中,您可以检查触摸 View 是否是您的 ImageView 之一。如果是这样,返回 NO 以防止激活 ScrollView 的平移手势识别器。

关于ios - UIScrollview,向下移动响应链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9311462/

相关文章:

ios - 如何从 UITableView 获取可见的顶行

ios - 在 UIScrollview 上缩放图像后,它滚动到图像区域之外

ios - 当 tableView 仍在滚动时 popToRootViewController 崩溃

ios - UIImage(从路径)到 NSData 导致崩溃

ios - 将它用于 UIImageView 时 UIImage 失真

ios - Alamofire/Swiftyjson - 将 JSON 类型传递给 Objc 协议(protocol)委托(delegate)

iphone - 为什么自定义 TableViewCell 不需要文件所有者?

ios - 未满时使 uiCollectionView 可滚动

iphone - 自动初始化对象变量

ios - PHFetchResults 日期过滤器没有为时间范围生成正确的结果