Я пытаюсь реализовать "RemembermbersLastFocusedIndexPath" для пользовательского представления коллекции.
В документации Apple сказано:
"Если вы подкласс UICollectionView, вы также можете реализовать то же самое
поведение, переопределяя свойство предпочитаемое значение FocusEnvironments, которое
определяется протоколом UIFocusEnvironment и принимается всеми
просмотры ".
class MyCollectionView: UICollectionView {
open override var preferredFocusEnvironments: [UIFocusEnvironment] {
let sortedVisibleIndexPaths = indexPathsForVisibleItems.sorted(by: {$0 < $1})
if let visibleIndexPath = sortedVisibleIndexPaths[safe: 1] {
if let cell = cellForItem(at: visibleIndexPath) {
return [cell]
}
}
return []
}
open override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
super.didUpdateFocus(in: context, with: coordinator)
LogUtils.logger.error("!")
}
}
вызываемая привилегированная среда вызывается, но когда я проверяю «context.nextFocusedItem» в «didUpdateFocus», это другая ячейка, и фокус перемещается случайным образом.
Кто-нибудь знает, где могут быть проблемы? Я не могу понять это.