2011-12-26 9 views
11

ユーザーが別の要素/表のセルを追加するとすぐ下にスクロールするUITableViewがあります。画面の場合は、テーブルの一番下に追加したばかりのセルをユーザーが見ることができるため、正常に動作します。しかし、VoiceOverを使用してアプリケーションを実行すると、最初に読み込まれたUITableCellが画面に表示される最上部のセルになります。uitableview(UIAccessibility)内の特定の表セルにボイスオーバーのフォーカスを設定します。

このUITableViewが表示されると、すぐにフォーカスを取得して読み込まれるセルがテーブルの最後のセルになるように設定します。これはどうすればいいですか?非常にシンプルなようですが、わかりません。

は、ここで私は(cellForRowAtIndexPathで)これまでに試したものです:

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

が、私はあなたがそのようaccessibilityElementIsFocused使用することができないと思います。

+0

オーケー呼ぶだろうが、私はそれを得るように見えることはできません働く – Ginny

+0

「UIAccessibilityZoomFocusChanged」は、ズーム機能が設定で有効になっている場合に使用されます。 –

答えて

8

特定の要素をVoiceOverで選択する場合は、UIAccessibilityPostNotification(...);を使用してアクセシビリティ通知を送信できます。それは主要な(完全なスクリーン)変更またはマイナーだ場合によっては

(レイアウトのみ)あなたが投稿する必要がある変更のいずれか

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

いずれの場合も、オプション引数はVoiceOverが移動する要素です。

だからあなたのテーブルビューに新しいセルを追加した後、私はこの答えはUIAccessibilityZoomFocusChanged` `でどこかにあるかなり確信しているよう

UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, 
           yourNewCellThatShouldHaveFocus); 
+0

この方法は、複数の場所で私にとってはうまくいかないようです。どのような理由が考えられますか? – Dynamite

関連する問題