UICollectionViewController + diffableDataSource - 当你的手指还在上面时,单元格不会突出显示
UICollectionViewController + diffableDataSource - cell gets unhighlighted while your finger is still on it
如果我将 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
,但为了使事情正常进行,collectionView dataSource
必须通过实施适当的方法来声明其对重新排序项目的支持。
在旧的 dataSource
方法中 moveItemAt
被标记为可选的,而在 diffableDataSource
中它不再被声明为可选的,这就是这个变量导致问题中描述的行为的原因多于。
文档中提供了有关此变量的更多信息:
https://developer.apple.com/documentation/uikit/uicollectionviewcontroller/1623979-installsstandardgestureforintera
如果我将 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
,但为了使事情正常进行,collectionView dataSource
必须通过实施适当的方法来声明其对重新排序项目的支持。
在旧的 dataSource
方法中 moveItemAt
被标记为可选的,而在 diffableDataSource
中它不再被声明为可选的,这就是这个变量导致问题中描述的行为的原因多于。
文档中提供了有关此变量的更多信息:
https://developer.apple.com/documentation/uikit/uicollectionviewcontroller/1623979-installsstandardgestureforintera