【问题标题】:Cannot swipe to switch UICollectionView page if you begin gesture on a cell如果您在单元格上开始手势,则无法滑动以切换 UICollectionView 页面
【发布时间】:2014-09-11 04:03:17
【问题描述】:

我有一个UICollectionView,每个单元格中都包含一个UIButton。我发现在水平页面之间滑动很困难,因为如果您在一个单元格上触摸开始滑动,UIButton 触摸事件将被触发,而不是允许滑动手势发生。我确实为集合视图启用了延迟内容触摸。我能做些什么来解决这个问题,以便在您开始在单元格上滑动时识别页面平移滑动手势?也许在识别UIControl 事件之前可以增加延迟量?

请注意,我确实需要保留按钮的触摸事件 - 我需要知道这些事件何时发生:TouchDown、TouchDragEnter、TouchCancel、TouchDragExit 和 TouchUpInside。

【问题讨论】:

    标签: ios uibutton uicollectionviewcell uicontrol


    【解决方案1】:

    在不知道你是在storyboard中添加手势识别器还是通过代码添加手势识别器的情况下,我只能建议你可以尝试在单元格的手势识别器和其他手势识别器之间建立依赖关系。

    - (void)requireGestureRecognizerToFail:(UIGestureRecognizer *)otherGestureRecognizer
    

    【讨论】:

    • 我没有对单元格应用任何手势识别器。
    • @Joey 然后是单元格中的按钮以某种方式阻止您滚动。我试过这个:1.滚动方向=水平2.启用滚动=是3.启用分页=是4.启用方向锁定=是。它工作正常
    • 确实是单元格中的按钮有问题。如何允许它进行分页但仍允许与按钮交互 - 调用 TouchDown 和 TouchUpInside 等触摸事件的方法?
    • @Joey 这可能无法直接帮助您解决问题,但我认为无论您想对按钮做什么,都可以在- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath
    • 不幸的是,我不这么认为。我需要处理 TouchDown、TouchDragEnter、TouchCancel、TouchDragExit 和 TouchUpInside - 仅知道它们何时选择单元格是不够的。
    【解决方案2】:

    您必须在您的UICollectionView 上将delaysContentTouches 设置为YES。这样,在单元格接收到触摸之前会有一个小的延迟,并且内置的滑动识别器可以完成它的工作。 您也可以通过在 IB 中勾选相应的复选标记从 nib/storyboard 中执行此操作:

    【讨论】:

      【解决方案3】:

      这似乎只是 iOS 8.0(至少是模拟器)中的一个问题,因为我在 iOS 8.1 中不再遇到它。

      【讨论】:

        猜你喜欢
        • 2019-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-11-13
        • 2011-10-31
        相关资源
        最近更新 更多