ios - UICollectionViewController + diffableDataSource - 当您的手指仍在其上时,单元格不会突出显示
问题描述
如果我正在使用UICollectionViewController
并diffableDataSource
点击单元格 - 它会突出显示,但当我仍然握住它时会变得不突出。如果UIViewController + collectionView
与diffableDataSource
- 一起使用,那么一切都按预期工作,并且单元格保持突出显示,直到我从中释放手指。如果UICollectionViewController
与标准一起使用,则相同dataSource
-一切正常。有没有人也注意到这个问题?任何建议或想法将不胜感激,也许我只是错过了一些东西,但现在感觉更像是苹果方面的错误
只需将这些方法添加到 CollectionViewController.swift 文件中:
override func collectionView(_ collectionView: UICollectionView, didHighlightItemAt indexPath: IndexPath) {
print("cell highlighted")
}
override func collectionView(_ collectionView: UICollectionView, didUnhighlightItemAt indexPath: IndexPath) {
print("cell unhighlighted")
}
当您的手指仍在单元格上时,您会看到打印了“未突出显示的单元格”
解决方案
好吧,事实证明我们需要设置
installsStandardGestureForInteractiveMovement = false
此变量安装一个标准手势识别器UICollectionViewController
以驱动重新排序过程。它true
默认设置为,但为了使事情正常工作,collectionViewdataSource
必须通过实现适当的方法来声明它对重新排序项目的支持。在旧的好dataSource
方法moveItemAt
被标记为可选,而在diffableDataSource
它不再被声明为可选,这就是这个变量导致上述问题中描述的行为的原因。有关此变量的更多信息,请参阅文档:
https ://developer.apple.com/documentation/uikit/uicollectionviewcontroller/1623979-installsstandardgestureforintera
推荐阅读
- angular - 动态创建多个农业网格表
- linux - 用“直接”符号链接替换多级符号链接
- node.js - 如何访问平面图的不同资源并保存每个资源在数据库中的位置
- excel - ThisWorkbook.ActiveSheet.PageSetup.PrintArea 返回值“”
- python - 如何在列表中找到关闭号码?Python
- php - Laravel 寻找单数表名
- javascript - 如何在量角器节点js中将字符串值与YYYY-MM-DD格式的日期进行比较
- mapreduce - Map Worker 失败时 Mapreduce 中的容错
- javascript - 在 TypeScript 中使用 Reduce 实现 Map 函数
- android - 证书安装程序的有效性,从 Play Market 中删除应用程序后