CollectionViewをVoiceOverに対応する時に、つまづいた点。
作っていたものは、
- 選択したチェックが入るようなもの(1つのみ選択可)
ごくごく普通の機能ですね。
しかし、選択するとフォーカスがずれて、選択していないところまで呼ばれてしまう。
(フォーカスがずれたものを読み上げた後、選択したものを読み上げ のような状態に)
この原因は、CollectionView自体をreloadしていたため。
変更があった部分のみをreloadするように修正すると、この状態は直る。
コードで書くとこんな感じ。
// ダメだったコード CollectionView.reloadData() // 修正後のコード CollectionView.reloadItem(at: [oldIndexPath, newIndexPath])
そもそも一箇所変更されただけで、全体を再読み込みするのはやめましょう。
(自戒の念を込めて)