【问题标题】:UICollectionView does not recognize tap on cell anymore when tapped during scrolling?在滚动期间点击时,UICollectionView 不再识别单元格上的点击?
【发布时间】:2016-04-17 12:12:38
【问题描述】:

UICollectionView 出现,并且无需滚动触摸其中一个单元格即可立即在 collectionView(_:didSelectItemAtIndexPath:) 中识别。

但是,当滚动 UICollectionView 并点击单元格以停止滚动移动时,不再识别单元格上的后续点击,并且不会触发 collectionView(_:didSelectItemAtIndexPath:)

只有在没有点击的情况下滚动自行停止时,才会识别后续点击。

我已经设置好了

collectionView.delaysContentTouches = false
collectionView.canCancelContentTouches = false

override func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}

旁注:

  • 单元格包含一个UIImageView 子视图作为完整封面。
  • UICollectionView 位于UITabelViewCell 内部,后者位于UIScrollView 内部,但我已经设置了scrollEnabled = falsecanCancelContentTouches = false

在设置 collectionView.allowsSelection = false 并向单元格添加 UITapeGestureRecognizer 时会发生相同的行为。

为什么无法识别单元格上的点击?

更新:另一个奇怪的效果是,当UICollectionView 滚动到其内容之外的区域以使其反弹时,它不会反弹而是停止滚动并停止查看释放平底锅后快速敲击一个单元格。在那种状态下,不会识别任何水龙头,因此这与上述行为基本相同。

【问题讨论】:

    标签: swift uicollectionview uigesturerecognizer uitapgesturerecognizer


    【解决方案1】:

    这种行为的原因是集合视图位于视图控制器的视图中(简化,不要介意强制展开):

    UIApplication.sharedApplication().windows.last?.makeKeyAndVisible()
    let parentViewController = UIApplication.sharedApplication().keyWindow!.rootViewController
    parentViewController.presentViewController(self, animated: true, completion: nil)
    

    解决方案是删除整个第一行makeKeyAndVisible

    【讨论】:

      猜你喜欢
      • 2013-07-15
      • 1970-01-01
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      相关资源
      最近更新 更多