NSCollectionView indexPathForItem(at: point) returns 第一项为零
NSCollectionView indexPathForItem(at: point) returns nil for first item
我在 MacOS 应用程序 (SDK 10.13) 中使用带有标准 NSCollectionViewFlowLayout 的 NSCollectionView。
出于某种原因,IndexPath(item: 0, section: 0)
中的项目不正确 'recognized'。
例如查询 indexPathForItem(at: point)
此项 returns 无。也不会为这个特定项目调用像 collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>)
这样的委托方法。
collectionView 中的所有其他项目均正常运行。
显式触发 collectionView.layout()
时(例如在 rightMouseDown(_:)
中),一切正常,项目响应委托方法。
我尝试在 viewDidLoad()
中触发 collectionView.layout()
但没有成功。在后续布局事件(例如滚动视图)发生之前,该项目是不可选择的。
知道为什么初始布局会导致这种行为吗?
更新:
我刚刚发现注释掉部分 header 大小
的委托方法
func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> NSSize {
return NSSize(width: 1000, height: 50)
}
问题已解决,第一项行为正常。
我当然想要 header。 header 部分的大小是否有任何我需要注意的限制?
好的,没关系。原来是我的错。
对于发生问题的场景,我想抑制 header。
虽然我很懒惰,但我只是返回了一个普通的 NSView() 作为 header 视图
func collectionView(_ collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: NSCollectionView.SupplementaryElementKind, at indexPath: IndexPath) -> NSView
我想没有正确返回 layout-constrained 视图搞乱了 collectionView 布局。
我在 MacOS 应用程序 (SDK 10.13) 中使用带有标准 NSCollectionViewFlowLayout 的 NSCollectionView。
出于某种原因,IndexPath(item: 0, section: 0)
中的项目不正确 'recognized'。
例如查询 indexPathForItem(at: point)
此项 returns 无。也不会为这个特定项目调用像 collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>)
这样的委托方法。
collectionView 中的所有其他项目均正常运行。
显式触发 collectionView.layout()
时(例如在 rightMouseDown(_:)
中),一切正常,项目响应委托方法。
我尝试在 viewDidLoad()
中触发 collectionView.layout()
但没有成功。在后续布局事件(例如滚动视图)发生之前,该项目是不可选择的。
知道为什么初始布局会导致这种行为吗?
更新:
我刚刚发现注释掉部分 header 大小
的委托方法func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> NSSize {
return NSSize(width: 1000, height: 50)
}
问题已解决,第一项行为正常。
我当然想要 header。 header 部分的大小是否有任何我需要注意的限制?
好的,没关系。原来是我的错。
对于发生问题的场景,我想抑制 header。
虽然我很懒惰,但我只是返回了一个普通的 NSView() 作为 header 视图
func collectionView(_ collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: NSCollectionView.SupplementaryElementKind, at indexPath: IndexPath) -> NSView
我想没有正确返回 layout-constrained 视图搞乱了 collectionView 布局。