首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UICollectionViewController + diffableDataSource -当您的手指仍在单元格上时,单元格将不突出显示

UICollectionViewController + diffableDataSource -当您的手指仍在单元格上时,单元格将不突出显示
EN

Stack Overflow用户
提问于 2020-09-29 18:30:12
回答 1查看 61关注 0票数 0

如果我在diffableDataSource上使用UICollectionViewController并点击手机,它会高亮显示,但当我仍然用手指着它时,它就不会高亮显示了。如果要在diffableDataSource中使用UIViewController + collectionView,那么一切都会正常工作,并且单元格会一直高亮显示,直到我释放它的手指。如果在标准dataSource中使用UICollectionViewController,情况也是一样--一切都很正常。有没有人也注意到这个问题?任何建议或想法都将不胜感激,也许我只是错过了一些东西,但现在感觉更像是苹果方面的一个bug

您可以在这里看到示例:https://github.com/ashishbl86/MockAppStore/blob/0ea8e74a4823c8c80bd7e8d5c6a9514958fbe459/MockAppStore/CollectionViewController.swift

只需将这些方法添加到CollectionViewController.swift文件中:

代码语言:javascript
复制
override func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {
        print("cell highlighted")
    }
    
    override func collectionView(_ collectionView: UICollectionView, didUnhighlightItemAt indexPath: IndexPath) {
        print("cell unhighlighted")
    } 

你会看到,当你的手指还在一个单元格上时,"cell unhighlighted“被打印出来

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-29 21:38:11

好的,结果是我们需要设置

代码语言:javascript
复制
installsStandardGestureForInteractiveMovement = false

此变量为UICollectionViewController安装标准手势识别器,以驱动重新排序过程。默认情况下,它被设置为true,但是为了正常工作,collectionView dataSource必须通过实现适当的方法来声明它支持对项目进行重新排序。在旧的good dataSource方法中,moveItemAt被标记为可选,而在diffableDataSource中,它不再被声明为可选,这就是该变量导致上述问题中描述的行为的原因。有关此变量的更多信息,请参阅文档:https://developer.apple.com/documentation/uikit/uicollectionviewcontroller/1623979-installsstandardgestureforintera

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64117774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档