我正在研究日历的可访问性,这实际上是一个collectionView。每当点击一个单元格时,都会通过调用
来重新加载collectionView[self.collectionView reloadData];
问题是如果voiceOver正在运行,则在点击单元格后焦点将移动到另一个位置,因为该单元格会在其他位置重复使用。
无论如何都要将焦点保持在reloadData之后的位置?谢谢!
答案 0 :(得分:2)
找到解决方法。焦点发生了变化,因为聚焦单元在执行[colleciontView reloadData]时会在其他地方重复使用。
因此,如果我们逐个重新加载collectionViewCells,则不会在其他任何地方使用该聚焦单元格。我在VoiceOver运行时调用此方法重新加载collectionView。
- (void)reloadCalendarCollectionView {
NSInteger items = [self.calendarItems count];
for (NSInteger i = 0; i < items; i++) {
[self.collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:i inSection:1] ]];
}
}
答案 1 :(得分:0)
您可以在重新加载数据之前尝试执行<Button bsStyle="success" bsSize="small" onClick={someCallback; someOtherCallback;}>
Something
</Button>
。然后,当它完成时,你将不得不做反向&amp;然后发布您正在寻找的单元格的通知。