13

ユーザーが別の要素/テーブルセルを追加するとすぐに一番下までスクロールする UITableView があります。ユーザーはテーブルの下部に追加したばかりのセルを見ることができるため、画面の場合、これは正常に機能します。しかし、VoiceOver を使用してアプリを実行すると、最初にフォーカスされて読み取られる UITableCell は、画面に表示されている一番上のセルになります。

この UITableView が表示されるとすぐにフォーカスされて読み取られるセルがテーブルの最後のセルになるように設定したいと思います。どうすればいいですか?それは非常に単純なように思えますが、私には理解できません。

これが私がこれまでに試したことです(cellForRowAtIndexPathで):

if (cellJustAdded && indexPath.row == [array count]-1) {
    cell.accessibilityElementIsFocused = YES; //obviously this does not work
}

しかし、accessibilityElementIsFocused をそのように使用できるとは思いません。

4

1 に答える 1

9

VoiceOver に特定の要素を選択させたい場合は、 を使用してアクセシビリティ通知を投稿できますUIAccessibilityPostNotification( ... );

主要な (画面全体の) 変更かマイナーな (レイアウトのみの) 変更かに応じて、投稿する必要があります。

  • UIAccessibilityScreenChangedNotification(完全な変更)
  • UIAccessibilityLayoutChangedNotification(小銭)

どちらの場合も、オプションの引数は、VoiceOver が移動する要素です。

したがって、新しいセルをテーブル ビューに追加した後、次のように呼び出します。

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification,
                                yourNewCellThatShouldHaveFocus); 
于 2013-03-28T10:28:00.830 に答える