2016-09-20 1 views
0

私のアプリには、大きな空白のtableHeaderViewを持つテーブルビューがあり、可視のセルをウインドウから完全にスクロールすることができます。 したがって、{0,0}のcontentOffsetはコンテンツがウィンドウの外にスクロールされることを意味します。最初のcontentOffsetは{0、{tableViewの高さ}}です。大きなヘッダーVoiceOverと互換性のあるUITableViewを作成するにはどうすればよいですか?

これはすべてうまくいきますが、アクセシビリティを有効にするのは難しい問題です。

ユーザは、ナビゲーションバーとそのバーボタンから始めて要素を踏み越えます。彼女が再度スワイプしてテーブルビューの最初のセルをアクティブにすると、テーブルビューは自動的に{0,0}にスクロールします。ただし、最初のセルはこのcontentOffsetで表示されないため、最初のセルにフォーカスを当てることができず、最後に選択した要素にフォーカスが維持されます。

これをどうにかして防止するか、VOモードでcontentOffsetを手動で制御できますか?

問題を示すdemo projectを作成しました。

答えて

0

空のヘッダーにアクセスできないコンテンツがない場合は、ロード時にコンテンツのオフセットをプログラム時に設定することを検討してください。UIAccessibilityIsVoiceOverRunning()。また、UIAccessibilityVoiceOverStatusChangedを監視して同じことを行う必要があります。

+0

loadにcontentOffsetを設定します。ただし、VoiceOverがテーブルビューに「タブ」すると、contentOffsetはシステムによって自動的に間違って変更されます。私は、新しい要素へのVOスイッチを検出するイベントやフックを認識しておらず、同様に、正しいVOスクロールイベントを間違ったものから容易に区別することができません。 –

+0

仮に、['UIAccessibilityFocus'](https://developer.apple.com/reference/uikit/1657010-uiaccessibilityfocus)非公式プロトコルを使用して遷移を検出することができます。 – Justin

関連する問題