AccessibilityRole(iOS、Android)
-
なし特徴的な要素はありません。
-
ボタンにはボタンの特性があります。
-
リンクにはリンク特性があります。
-
searchは、検索ボックスとして使用されるテキストボックスです。
-
画像には画像機能があります。ボタンまたはリンクと組み合わせて使用できます。
-
keyboardkey要素は、仮想キーボードのキーとして使用されます。
-
テキストには、変更不可能なテキストの特性があります。
-
調整可能な要素には、調整可能な特性(スライダーなど)があります。
-
画像ボタン
-
ヘッダーは、コンテンツ領域(ナビゲーションバーのタイトルなど)のヘッドとして機能します。
-
summaryアプリがコールドスタートされたとき(バックグラウンドを完全に出てから入ることを意味します)、現在の要約サマリー情報要素を提供します。たとえば、気象アプリケーションが寒くなると、現在の気象条件を表示する要素が要約としてマークされます。
-
アラート
-
チェックボックス
-
コンボボックス
-
メニュー
-
メニューバー
-
メニュー項目
-
プログレスバー
-
無線
-
ラジオグループ
-
スクロール・バー
-
スピンボタン
-
スイッチ
-
タブ
-
タブリスト
-
タイマー
-
ツールバー
ユーザーエクスペリエンスを向上させる
- テキスト入力を構成する
タッチスクリーン携帯電話の小さな画面とソフトキーボードのため、携帯電話でテキストを入力することは困難です。ただし、このプロセスを簡単にするために必要なデータに基づいてテキスト入力を構成できます。
オートフォーカス(フォーカス)最初のテキストフィールドは、自動大文字化と自動修正を有効または無効にするために、予期される入力形式としてプレースホルダーを使用します。キーボードタイプを選択してください(例:電子メール、数値)[Enter]ボタンが次のフィールドにフォーカスするか、フォームを送信することを確認してください
- キーボード非表示時のレイアウト管理
ソフトキーボードは、電話画面のほぼ半分を占めます。ソフトキーボードでカバーされるインタラクティブコンポーネントがある場合は、[KeyboardAvoidingViewコンポーネント]を使用して、キーボードを開いたときにアクセスできることを確認してください。
- タッチ領域を拡大
電話のボタンを正確にクリックすることは非常に困難です。すべてのインタラクティブ要素が44x44以上であることを確認してください。大きなサイズをサポートする一般的な方法は、パディング、minWidth、minHeightスタイルを使用することです。または、hitSlop属性を使用して、レイアウトに影響を与えずにインタラクティブ領域を増やすことができます
- 画面回転ロック
通常の状況では、Dimensions APIを使用して向きの変更を処理しない限り、複数の画面(横向きと縦向きを参照)が正常に表示されます。複数の画面の向きをサポートしたくない場合は、画面の向きを横向きまたは縦向きにロックできます。
Androidの場合、AndroidManifest.xmlファイルを開き、Activity要素に「android:screenOrientation = "portrait"」を追加して画面を縦向きにロックするか、「android:screenOrientation = "landscape"」を使用して画面を横向きにロックします。
- タイマー
setTimeout、clearTimeout setInterval、clearInterval setImmediate、clearImmediate requestAnimationFrame、cancelAnimationFrame requestAnimationFrame(fn)とsetTimeout(fn、0)は異なり、前者は各フレームの更新後に一度実行され、後者は可能な限り高速に実行されます(iPhone5Sで可能) 1秒あたり1000回以上)。
setImmediateは、現在のJavaScript実行ブロックの最後で、バッチ応答データをネイティブに送信する直前に実行されます。setImmediateのコールバック関数でsetImmediateを実行すると、呼び出しの前にネイティブコードを待つのではなく、すぐに実行されることに注意してください。
Promiseの実装では、setImmediateを使用して非同期呼び出しを実行します。
InteractionManagerネイティブアプリケーションが非常にスムーズに動作する重要な理由は、インタラクションとアニメーション中の重い操作を回避するためです。React Nativeでは、JavaScript実行スレッドが1つしかないため、現在制限されています。ただし、InteractionManagerを使用して、重い作業を実行する前にすべてのインタラクションとアニメーションが処理されていることを確認できます。
アプリケーションは次のコードを使用して、対話の終了後に実行されるタスクをスケジュールできます。
InteractionManager.runAfterInteractions(() => {
// ...需要长时间同步执行的任务...
});