2

私は、項目のリストを持つモバイル アプリケーションに取り組んでおり、それぞれにトグル ボタンが含まれています。アクセシビリティ (ボイス オーバー) モードがオンになっている場合、これらのリスト アイテムへのフォーカスは有効になりますが、アイテムをダブルタップしてもトグル ボタンのオン/オフは切り替わりません。

これが私が使用しているコードサンプルです。コンテンツを読み取りますが、オンタップまたは ng-click メソッドはトリガーされません。

以下のコードはアイテムに焦点を当てていますが、ダブルタップしてもトグルはオン/オフになりません。iOS と Android で同じ動作が見られます。何か案は?

HTML

<ion-list>
   <ion-toggle role="option" toggle-class="toggle-balanced" ng-repeat=“item in items"  tabindex="-1" ng-model="item.isToggleOn" ng-change=“item.isToggleOn" on-tap=“updateSettings(item)" aria-label=“Item description,,  Double Tap to toggle setting." >
      <div class="pref-item-text-wrap” >Item description</div>
   </ion-toggle>
</ion-list>

コントローラーで:

$scope.updateSettings = function (item) { console.log("In update settings"); }

4

2 に答える 2

1

これを機能させるためのちょっとしたハックがあります。

SASS では、Ionic をインポートした後、トグル コンポーネントの pointer-events プロパティを上書きする必要があります。

// accessible toggles 
.item-toggle {
  pointer-events: all;
  .toggle {
    pointer-events: none;
  }
}

これにより、アイテム レベルでイベントを手動で処理しない限り、トグルがクリック イベントに反応しないことに注意してください。

<ion-toggle role="checkbox" aria-checked="{{isChecked}}" ng-model="isChecked" ng-click="isChecked=!isChecked">Toggle item</ion-toggle>
于 2016-06-03T17:31:43.260 に答える
0

ジェスチャーやキーボード イベントなどのイベントは、スクリーン リーダーによって傍受されます。適切な役割を使用して、スクリーン リーダーが適切なイベントを JavaScript イベント ハンドラーに渡すことができるようにすることができます。

また、スクリーン リーダーをオンにすると、ジェスチャが変わることに注意してください。シングルタップは iOS ではダブルタップになり、ダブルタップはトリプルタップになります。http://axslab.com/articles/ios-voiceover-gestures-and-keyboard-commands.phpを参照してください。

Android でも同様の変更が行われます。

そうは言っても、その小さなコードには多くの問題があります。

  1. が -1の場合tabindex、キーボードのみのユーザーはフォーカスできないため、すべてのユーザーがアクセスできません。tabindexが0 に設定されていることを確認する必要があります
  2. checkboxあなたが説明している動作は、 よりもまたはのradio役割に似ていoptionます。あなたはおそらくcheckbox役割を使用しているはずです。
  3. 仕様http://www.w3.org/TR/wai-aria/roles#optionで明確にわかるように、 の親はロールでoptionなければなりません。と組み合わせて使用​​する場合は、 に設定する必要があります。listboxlistboxoptionaria-multiselectabletrue

いずれの場合も、これらのロールのいずれかを実装するときは、適切なaria-*状態プロパティを維持し、デバイスに依存しないイベント ハンドラーを使用する必要があります。必要な動作を得るには、 ngAriang-clickと組み合わせて使用​​する必要がある場合があります。キーボードのみでスクリーン リーダーなし (Android の場合)、およびキーボードとスクリーン リーダー (iOS と Android の場合)、およびタッチとスクリーン リーダー (iOS と Android の場合) でテストしてください。

于 2015-11-16T14:08:00.620 に答える