2014-12-13 124 views
0
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 
} 

上面的代码工作正常,尽管它和地狱一样丑陋。我有一个深度视图层次结构的滚动视图,我需要一个更好的方式来禁用滚动选择器时滚动的集合视图。如果子视图正在滚动,则禁止滚动查看超级视图

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

+0

这与[此答案](http://stackoverflow.com/a/26512396/758831)? – wmorrison365 2014-12-13 00:45:51

+0

@ wmorrison365我不这么认为,因为我的问题是对OP的回答。此外,寻找解决方案可能是一个更好的设计模式,使用我发布的相同想法。 – Mazyod 2014-12-13 06:13:36

回答

1

我认为最好的方式来继承你的集合视图,并覆盖

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

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