ios - 如果 subview 正在滚动,则禁用 super View 滚动

标签 ios uiscrollview uikit uigesturerecognizer

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    // initialize cell

    if let pickerCell = cell as? SettingsPickerCell {
        collectionView.panGestureRecognizer.requireGestureRecognizerToFail(pickerCell.picker.collectionViewController.collectionView!.panGestureRecognizer)
    }

    return cell
}

上面的代码可以工作,尽管很难看。我有一个 ScrollView 深埋在 View 层次结构中,我需要一种更好的方法来在选择器滚动时禁用 Collection View 滚动。

我尝试使用 exclusiveTouch 属性,但没有帮助。还有比这更好的方法吗?

最佳答案

我认为最好的方法是子类化你的 Collection View 并覆盖

func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 

和其他相关方法。您可以在那里控制触摸流并解决问题。

关于ios - 如果 subview 正在滚动,则禁用 super View 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27454024/

相关文章:

objective-c - 如何在 UIScrollView 的上下文中找到 UIView 的框架?

php - IOS 向特定用户推送通知?

ios - 作用于所有类的通用方法

ios - 如何根据 i18n 将 NSTimeInterval 正确格式化为时间段?

ios - 禁用 UIScrollView 手势

ios - 在 UIScrollView 仍处于事件状态的情况下检测 View 中的连续触摸位置

iphone - 设置 hidesBottomBarWhenPushed 会在弹出 View Controller 后导致底部栏丢失

ios - MKMapView cornerRadius 仅适用于左上角

iphone - viewDidLoad什么时候被调用?

ios - 将项目中的资源组替换为资源目录,构建时代码设计失败