【问题标题】:Gestures on a UICollectionViewCell; what to do with the result?UICollectionViewCell 上的手势;结果怎么办?
【发布时间】:2012-09-13 10:21:43
【问题描述】:

我目前正在开发一个 iPad 应用项目。主屏幕是UICollectionViewAlbumCell,是UICollectionViewCell 的子类。现在我想添加一个UILongPressGestureRecognizer 来弹出一个UIActionSheet

首先我在UICollectionViewController 中尝试过,但我认为这不是添加这些的正确位置。所以我最好的猜测是在AlbumCell 类中添加手势?然后可能将自己添加为委托,因此它可以捕获自己的手势。

到目前为止,这是一个好的方法吗?

捕捉到手势后,我应该显示UIActionSheet。现在,当用户在编辑模式下选择一个单元格时,我在UICollectionViewController 中打开它。但是我应该像现在一样调用UICollectionViewController 上的方法来打开它吗?还是单元格应该处理它自己的UIActionSheet

最终我得让UICollectionViewController做什么,可能是让他打开UIActionSheet,或者根据结果进行处理。 AlbumCell应该如何与之“沟通”?

这是我一直在努力解决的问题,不仅仅是在这个用例中。方法是否接近,或者我应该完全不同地处理这些操作?

【问题讨论】:

  • 因为 AlbumCell 是一个视图,而 UICollectionViewController 是一个视图控制器。所以“打开 UIActionSheet”动作应该由 UICollectionViewController 管理。你可以使用Protocol/Delegate
  • 这是有道理的。但是公认的应该加到cell子类中?
  • 是的,因为单元格将被重复使用。
  • 好的。到目前为止一切都清楚了,但是我应该如何让视图控制器知道其中一个单元格被按下了,以及哪个单元格被按下了?
  • 您可以创建类似 iVar 的索引作为单元格的标签。

标签: objective-c ios6 uicollectionview


【解决方案1】:

您可以采用与using UILongPressGestureRecognizer on UITableView相同的方法。

基本上,设置一个识别器。在选择器中,使用indexPathForItemAtPoint: 找出用​​户正在按下的索引路径。最后,如果用户正在按下一个单元格(而不是按下单元格之间的空格),请随意显示UIActionSheet

【讨论】:

  • 当然,为什么我自己没有想到呢?我知道这不是它应该的样子,这更有意义!要实现它,很确定它会完成这项工作。 :)
猜你喜欢
  • 2013-09-21
  • 1970-01-01
  • 2013-04-22
  • 2015-08-07
  • 2016-11-10
  • 2019-06-29
  • 2013-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多