الفرق بين المراجعتين ل"ReactNative/accessibilityinfo"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط
 
(4 مراجعات متوسطة بواسطة مستخدمين اثنين آخرين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE: AccessibilityInfo في React Native}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:الواجهة AccessibilityInfo في React Native}}</noinclude>
 
من المفيد في بعض الأحيان معرفة ما إذا كان الجهاز يحتوي على قارئ شاشةٍ نشطٍ حاليًا أو لا، وقد صُمِّمَت واجهة برمجة التطبيقات ‎‎<code>AccessibilityInfo</code>‎‎ لهذا الغرض. يمكنك استخدامها للاستعلام عن الحالة الحالية لقارئ الشاشة وكذلك للتسجيل ليتم إعلامك عند تغيّر حالة قارئ الشاشة.
 
من المفيد في بعض الأحيان معرفة ما إذا كان الجهاز يحتوي على قارئ شاشةٍ نشطٍ حاليًا أو لا، وقد صُمِّمَت واجهة برمجة التطبيقات ‎‎<code>AccessibilityInfo</code>‎‎ لهذا الغرض. يمكنك استخدامها للاستعلام عن الحالة الحالية لقارئ الشاشة وكذلك للتسجيل ليتم إعلامك عند تغيّر حالة قارئ الشاشة.
  
 +
== مثال ==
 
ما يلي مثال صغير يوضح كيفية استخدام ‎‎<code>AccessibilityInfo</code>‎‎:
 
ما يلي مثال صغير يوضح كيفية استخدام ‎‎<code>AccessibilityInfo</code>‎‎:
 +
 +
* [https://snack.expo.dev/@hsoubwiki/accessibilityinfo-function-component-example مثال لمكون دالة (Function Component)]
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
class AccessibilityStatusExample extends React.Component {
+
import React, { useState, useEffect } from "react";
 +
import { AccessibilityInfo, View, Text, StyleSheet } from "react-native";
 +
 
 +
const App = () => {
 +
  const [reduceMotionEnabled, setReduceMotionEnabled] = useState(false);
 +
  const [screenReaderEnabled, setScreenReaderEnabled] = useState(false);
 +
 
 +
  useEffect(() => {
 +
    const reduceMotionChangedSubscription = AccessibilityInfo.addEventListener(
 +
      "reduceMotionChanged",
 +
      reduceMotionEnabled => {
 +
        setReduceMotionEnabled(reduceMotionEnabled);
 +
      }
 +
    );
 +
    const screenReaderChangedSubscription = AccessibilityInfo.addEventListener(
 +
      "screenReaderChanged",
 +
      screenReaderEnabled => {
 +
        setScreenReaderEnabled(screenReaderEnabled);
 +
      }
 +
    );
 +
 
 +
    AccessibilityInfo.isReduceMotionEnabled().then(
 +
      reduceMotionEnabled => {
 +
        setReduceMotionEnabled(reduceMotionEnabled);
 +
      }
 +
    );
 +
    AccessibilityInfo.isScreenReaderEnabled().then(
 +
      screenReaderEnabled => {
 +
        setScreenReaderEnabled(screenReaderEnabled);
 +
      }
 +
    );
 +
 
 +
    return () => {
 +
      reduceMotionChangedSubscription.remove();
 +
      screenReaderChangedSubscription.remove();
 +
    };
 +
  }, []);
 +
 
 +
  return (
 +
    <View style={styles.container}>
 +
      <Text style={styles.status}>
 +
        The reduce motion is {reduceMotionEnabled ? "enabled" : "disabled"}.
 +
      </Text>
 +
      <Text style={styles.status}>
 +
        The screen reader is {screenReaderEnabled ? "enabled" : "disabled"}.
 +
      </Text>
 +
    </View>
 +
  );
 +
}
 +
 
 +
const styles = StyleSheet.create({
 +
  container: {
 +
    flex: 1,
 +
    alignItems: "center",
 +
    justifyContent: "center"
 +
  },
 +
  status: {
 +
    margin: 30
 +
  }
 +
});
 +
 
 +
export default App;
 +
</syntaxhighlight>
 +
 
 +
* [https://snack.expo.dev/@hsoubwiki/accessibilityinfo-class-component-example مثال لمكون صنف (Function Component)]
 +
<syntaxhighlight lang="javascript">
 +
import React, { Component } from 'react';
 +
import { AccessibilityInfo, View, Text, StyleSheet } from 'react-native';
 +
 
 +
class AccessibilityStatusExample extends Component {
 
   state = {
 
   state = {
 
     reduceMotionEnabled: false,
 
     reduceMotionEnabled: false,
سطر 11: سطر 83:
  
 
   componentDidMount() {
 
   componentDidMount() {
     AccessibilityInfo.addEventListener(
+
     this.reduceMotionChangedSubscription = AccessibilityInfo.addEventListener(
 
       'reduceMotionChanged',
 
       'reduceMotionChanged',
       this._handleReduceMotionToggled,
+
       reduceMotionEnabled => {
 +
        this.setState({ reduceMotionEnabled });
 +
      }
 
     );
 
     );
     AccessibilityInfo.addEventListener(
+
     this.screenReaderChangedSubscription = AccessibilityInfo.addEventListener(
 
       'screenReaderChanged',
 
       'screenReaderChanged',
       this._handleScreenReaderToggled,
+
       screenReaderEnabled => {
 +
        this.setState({ screenReaderEnabled });
 +
      }
 
     );
 
     );
  
     AccessibilityInfo.isReduceMotionEnabled().then((reduceMotionEnabled) => {
+
     AccessibilityInfo.isReduceMotionEnabled().then(reduceMotionEnabled => {
       this.setState({reduceMotionEnabled});
+
       this.setState({ reduceMotionEnabled });
 
     });
 
     });
     AccessibilityInfo.isScreenReaderEnabled().then((screenReaderEnabled) => {
+
     AccessibilityInfo.isScreenReaderEnabled().then(screenReaderEnabled => {
       this.setState({screenReaderEnabled});
+
       this.setState({ screenReaderEnabled });
 
     });
 
     });
 
   }
 
   }
  
 
   componentWillUnmount() {
 
   componentWillUnmount() {
     AccessibilityInfo.removeEventListener(
+
     this.reduceMotionChangedSubscription.remove();
      'reduceMotionChanged',
+
     this.screenReaderChangedSubscription.remove();
      this._handleReduceMotionToggled,
 
    );
 
 
 
     AccessibilityInfo.removeEventListener(
 
      'screenReaderChanged',
 
      this._handleScreenReaderToggled,
 
    );
 
 
   }
 
   }
 
  _handleReduceMotionToggled = (reduceMotionEnabled) => {
 
    this.setState({reduceMotionEnabled});
 
  };
 
 
  _handleScreenReaderToggled = (screenReaderEnabled) => {
 
    this.setState({screenReaderEnabled});
 
  };
 
  
 
   render() {
 
   render() {
 
     return (
 
     return (
       <View>
+
       <View style={styles.container}>
         <Text>
+
         <Text style={styles.status}>
 
           The reduce motion is{' '}
 
           The reduce motion is{' '}
 
           {this.state.reduceMotionEnabled ? 'enabled' : 'disabled'}.
 
           {this.state.reduceMotionEnabled ? 'enabled' : 'disabled'}.
 
         </Text>
 
         </Text>
         <Text>
+
         <Text style={styles.status}>
 
           The screen reader is{' '}
 
           The screen reader is{' '}
 
           {this.state.screenReaderEnabled ? 'enabled' : 'disabled'}.
 
           {this.state.screenReaderEnabled ? 'enabled' : 'disabled'}.
سطر 63: سطر 124:
 
   }
 
   }
 
}
 
}
 +
 +
const styles = StyleSheet.create({
 +
  container: {
 +
    flex: 1,
 +
    alignItems: 'center',
 +
    justifyContent: 'center',
 +
  },
 +
  status: {
 +
    margin: 30,
 +
  },
 +
});
 +
 +
export default AccessibilityStatusExample;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
==التوابع==
 
==التوابع==
 +
 +
=== ‎‎<code>addEventListener()</code>‎‎ ===
 +
<syntaxhighlight lang="javascript">
 +
static addEventListener(eventName, handler)
 +
</syntaxhighlight>
 +
أضف معالج أحداث. الأحداث المدعومة:
 +
 +
* ‎‎<code>announcementFinished</code>‎‎: '''حدث iOS فقط.''' يُطلَق عندما ينتهي قارئ الشاشة من إصدار إعلان. المعامل المُمرَّر إلى معالج الأحداث هو قاموس يحتوي على المفاتيح التاليّة:
 +
** ‎‎<code>announcement</code>‎‎: السلسلة النصيّة التي أعلنها قارئ الشاشة.
 +
** ‎‎<code>success</code>‎‎: قيمة منطقيّة تُشير إلى ما إذا تمّ الإعلان بنجاح.
 +
* ‎‎<code>boldTextChanged</code>‎‎: '''حدث iOS فقط.''' يُطلَق عندما تتغير حالة تبديل النص الغامق (bold text toggle). تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين النص الغامق والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 +
* ‎‎<code>grayscaleChanged</code>‎‎: '''حدث iOS فقط.''' يُطلَق عندما تتغير حالة تبديل التدرّج الرمادي. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين التدرّج الرمادي والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 +
* ‎‎<code>invertColorsChanged</code>‎‎: '''حدث iOS فقط.''' يُطلَق عندما تتغير حالة تبديل قلب الألوان. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين قلب الألوان والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 +
* ‎‎<code>reduceMotionChanged</code>‎‎: يُطلَق عندما تتغير حالة تبديل تقليل الحركة،  تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين تقليل الحركة (أو عندما يكون "مقياس الحركة الانتقالية (Transition Animation Scale)" في "خيارات المطور" مضبوطًا على "Animation off") والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 +
* ‎‎<code>reduceTransparencyChanged</code>‎‎: '''حدث iOS فقط.''' يُطلَق عندما تتغير حالة تبديل  تقليل الشفافية. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين تقليل الشفافية والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 +
* ‎‎<code>screenReaderChanged</code>‎‎: يُطلَق عندما تتغير حالة تبديل قارئ الشاشة. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين قارئ الشاشة والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 +
 +
===‎‎<code>announceForAccessibility()</code>‎‎===
 +
<syntaxhighlight lang="javascript">
 +
static announceForAccessibility(announcement)
 +
</syntaxhighlight>
 +
اكتب سلسلة نصيّةً ليُعلِنَها قارئ الشاشة.
 +
 +
=== <code>()getRecommendedTimeoutMillis</code> ===
 +
<syntaxhighlight lang="javascript">
 +
static getRecommendedTimeoutMillis(originalTimeout)
 +
 +
</syntaxhighlight>
 +
اجلب المهلة التي يحتاج إليها المستخدم بالميلي ثانية.
 +
 +
تضبط هذه القيمة في خيار "Time to take action (Accessibility timeout)" (الوقت المطلوب لتنفيذ إجراء (مهلة تساعد في تطبيق سهولة الوصول) وذلك من خيارات سهولة الوصول (إمكانية الوصول Accessibility).
 +
 +
المعاملات:
 +
{| class="wikitable"
 +
!الاسم
 +
!النوع
 +
!مطلوب
 +
!الوصف
 +
|-
 +
!originalTimeout
 +
!عدد
 +
!نعم
 +
!المهلة المراد إعادتها إن لم يكن خيار "Accessibility timeout" (مهلة تساعد في تطبيق سهولة الوصول) مضبوطًا بعد، وتكون بواحدة الميلي ثانية.
 +
|}
 +
 
===‎‎<code>isBoldTextEnabled()</code>‎‎===
 
===‎‎<code>isBoldTextEnabled()</code>‎‎===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static isBoldTextEnabled()
 
static isBoldTextEnabled()
 
</syntaxhighlight>
 
</syntaxhighlight>
نظام iOS فقط. الاستعلام عمّا إذا كان نصٌّ غامقٌ ممكّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا] يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين النص الغامق، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
+
'''نظام iOS فقط.''' الاستعلام عمّا إذا كان نصٌّ غامقٌ ممكّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا] يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين النص الغامق، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
 
===‎‎<code>isGrayscaleEnabled()</code>‎‎===
 
===‎‎<code>isGrayscaleEnabled()</code>‎‎===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static isGrayscaleEnabled()
 
static isGrayscaleEnabled()
 
</syntaxhighlight>
 
</syntaxhighlight>
نظام iOS فقط. الاستعلام عمّا إذا كان التدرج الرمادي (grayscale) مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية.تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين التدرج الرمادي، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
+
'''نظام iOS فقط.''' الاستعلام عمّا إذا كان التدرج الرمادي (grayscale) مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين التدرج الرمادي، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
 
===‎‎<code>isInvertColorsEnabled()</code>‎‎===
 
===‎‎<code>isInvertColorsEnabled()</code>‎‎===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static isInvertColorsEnabled()
 
static isInvertColorsEnabled()
 
</syntaxhighlight>
 
</syntaxhighlight>
نظام iOS فقط. الاستعلام عمّا إذا كان قلب الألوان مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية.تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين قلب الألوان، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
+
'''نظام iOS فقط.''' الاستعلام عمّا إذا كان قلب الألوان مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين قلب الألوان، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
  
 
===‎‎<code>isReduceMotionEnabled()</code>‎‎===
 
===‎‎<code>isReduceMotionEnabled()</code>‎‎===
سطر 86: سطر 205:
 
static isReduceMotionEnabled()
 
static isReduceMotionEnabled()
 
</syntaxhighlight>
 
</syntaxhighlight>
الاستعلام عمّا إذا كان خيار تقليل الحركة مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية.تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين تقليل الحركة، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
+
الاستعلام عمّا إذا كان خيار تقليل الحركة مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين تقليل الحركة، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
 
===‎‎<code>isReduceTransparencyEnabled()</code>‎‎===
 
===‎‎<code>isReduceTransparencyEnabled()</code>‎‎===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static isReduceTransparencyEnabled()
 
static isReduceTransparencyEnabled()
 
</syntaxhighlight>
 
</syntaxhighlight>
نظام iOS فقط. الاستعلام عمّا إذا كان خيار تقليل الشفافية مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية.تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين تقليل الشفافية، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
+
'''نظام iOS فقط.''' الاستعلام عمّا إذا كان خيار تقليل الشفافية مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين تقليل الشفافية، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
  
 
===‎‎<code>isScreenReaderEnabled()</code>‎‎===
 
===‎‎<code>isScreenReaderEnabled()</code>‎‎===
سطر 97: سطر 216:
 
static isScreenReaderEnabled()
 
static isScreenReaderEnabled()
 
</syntaxhighlight>
 
</syntaxhighlight>
الاستعلام عمّا إذا كان قارئ شاشةٍ مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية.تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين قارئ الشاشة، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
+
الاستعلام عمّا إذا كان قارئ شاشةٍ مُمكَّنًا حاليًا. تُعيد [https://wiki.hsoub.com/JavaScript/Promise وعدًا]  يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين قارئ الشاشة، والقيمة ‎‎<code>false</code>‎‎ في غير ذلك.
===‎‎<code>addEventListener()</code>‎‎===
 
<syntaxhighlight lang="javascript">
 
static addEventListener(eventName, handler)
 
</syntaxhighlight>
 
أضف معالج أحداث. الأحداث المدعومة:
 
 
 
* ‎‎<code>boldTextChanged</code>‎‎: حدث iOS فقط. يُطلَق عندما تتغير حالة تبديل النص الغامق (bold text toggle). تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين النص الغامق والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 
* ‎‎<code>grayscaleChanged</code>‎‎: حدث iOS فقط. يُطلَق عندما تتغير حالة تبديل التدرّج الرمادي. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين التدرّج الرمادي والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 
* ‎‎<code>invertColorsChanged</code>‎‎: حدث iOS فقط. يُطلَق عندما تتغير حالة تبديل قلب الألوان. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين قلب الألوان والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 
* ‎‎<code>reduceMotionChanged</code>‎‎: يُطلَق عندما تتغير حالة تبديل تقليل الحركة،  تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين تقليل الحركة (أو عندما يكون "مقياس الحركة الانتقالية (Transition Animation Scale)" في "خيارات المطور" مضبوطًا على "Animation off") والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 
* ‎‎<code>screenReaderChanged</code>‎‎: يُطلَق عندما تتغير حالة تبديل قارئ الشاشة. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين قارئ الشاشة والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 
* ‎‎<code>reduceTransparencyChanged</code>‎‎: حدث iOS فقط. يُطلَق عندما تتغير حالة تبديل  تقليل الشفافية. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎<code>true</code>‎‎ عند تمكين تقليل الشفافية والقيمة ‎‎ ‎‎<code>false</code>‎‎ في غير ذلك.
 
* ‎‎<code>announcementFinished</code>‎‎: حدث iOS فقط. يُطلَق عندما ينتهي قارئ الشاشة من إصدار إعلان. المعامل المُمرَّر إلى معالج الأحداث هو قاموس يحتوي على المفاتيح التاليّة:
 
** ‎‎<code>announcement</code>‎‎: السلسلة النصيّة التي أعلنها قارئ الشاشة.
 
** ‎‎<code>success</code>‎‎: قيمة منطقيّة تُشير إلى ما إذا تمّ الإعلان بنجاح.
 
 
 
 
===‎‎<code>setAccessibilityFocus()</code>‎‎===
 
===‎‎<code>setAccessibilityFocus()</code>‎‎===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
سطر 119: سطر 222:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
اضبط تركيز إمكانية الوصول على مكوّن React. على Android، هذا يعادل ‎‎<code>UIManager.sendAccessibilityEvent(reactTag, UIManager.AccessibilityEventTypes.typeViewFocused);</code>‎‎.
+
اضبط تركيز إمكانية الوصول على مكوّن React. على Android، هذا يستدعي التابع <code>UIManager.sendAccessibilityEvent</code> مع تمرير الوسيط <code>reactTag</code> والوسيط <code>UIManager.AccessibilityEventTypes.typeViewFocused</code> إليه:
===‎‎<code>announceForAccessibility()</code>‎‎===
+
<syntaxhighlight lang="java">
<syntaxhighlight lang="javascript">
+
UIManager.sendAccessibilityEvent(reactTag, UIManager.AccessibilityEventTypes.typeViewFocused);
static announceForAccessibility(announcement)
 
 
</syntaxhighlight>
 
</syntaxhighlight>
اكتب سلسلة نصيّةً ليُعلِنَها قارئ الشاشة.
 
 
===‎‎<code>removeEventListener()</code>‎‎===
 
===‎‎<code>removeEventListener()</code>‎‎===
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
 
static removeEventListener(eventName, handler)
 
static removeEventListener(eventName, handler)
 
</syntaxhighlight>
 
</syntaxhighlight>
إزالة معالج أحداثٍ.
+
إزالة معالج أحداثٍ.<blockquote>'''مهمل''': استعمل التابع <code>remove()‎</code> عند الاشتراك بالحدث الذي يعيده <code>[[ReactNative/accessibilityinfo#addEventListener.28.29|AddEventListener()‎]]</code>.</blockquote>
  
 
== مصادر ==
 
== مصادر ==
 
* [https://facebook.github.io/react-native/docs/accessibilityinfo صفحة AccessibilityInfo في توثيق React Native الرسمي.]
 
* [https://facebook.github.io/react-native/docs/accessibilityinfo صفحة AccessibilityInfo في توثيق React Native الرسمي.]
 
[[تصنيف:ReactNative]]
 
[[تصنيف:ReactNative]]
 +
[[تصنيف:React Native API]]

المراجعة الحالية بتاريخ 14:12، 9 أكتوبر 2021

من المفيد في بعض الأحيان معرفة ما إذا كان الجهاز يحتوي على قارئ شاشةٍ نشطٍ حاليًا أو لا، وقد صُمِّمَت واجهة برمجة التطبيقات ‎‎AccessibilityInfo‎‎ لهذا الغرض. يمكنك استخدامها للاستعلام عن الحالة الحالية لقارئ الشاشة وكذلك للتسجيل ليتم إعلامك عند تغيّر حالة قارئ الشاشة.

مثال

ما يلي مثال صغير يوضح كيفية استخدام ‎‎AccessibilityInfo‎‎:

import React, { useState, useEffect } from "react";
import { AccessibilityInfo, View, Text, StyleSheet } from "react-native";

const App = () => {
  const [reduceMotionEnabled, setReduceMotionEnabled] = useState(false);
  const [screenReaderEnabled, setScreenReaderEnabled] = useState(false);

  useEffect(() => {
    const reduceMotionChangedSubscription = AccessibilityInfo.addEventListener(
      "reduceMotionChanged",
      reduceMotionEnabled => {
        setReduceMotionEnabled(reduceMotionEnabled);
      }
    );
    const screenReaderChangedSubscription = AccessibilityInfo.addEventListener(
      "screenReaderChanged",
      screenReaderEnabled => {
        setScreenReaderEnabled(screenReaderEnabled);
      }
    );

    AccessibilityInfo.isReduceMotionEnabled().then(
      reduceMotionEnabled => {
        setReduceMotionEnabled(reduceMotionEnabled);
      }
    );
    AccessibilityInfo.isScreenReaderEnabled().then(
      screenReaderEnabled => {
        setScreenReaderEnabled(screenReaderEnabled);
      }
    );

    return () => {
      reduceMotionChangedSubscription.remove();
      screenReaderChangedSubscription.remove();
    };
  }, []);

  return (
    <View style={styles.container}>
      <Text style={styles.status}>
        The reduce motion is {reduceMotionEnabled ? "enabled" : "disabled"}.
      </Text>
      <Text style={styles.status}>
        The screen reader is {screenReaderEnabled ? "enabled" : "disabled"}.
      </Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: "center",
    justifyContent: "center"
  },
  status: {
    margin: 30
  }
});

export default App;
import React, { Component } from 'react';
import { AccessibilityInfo, View, Text, StyleSheet } from 'react-native';

class AccessibilityStatusExample extends Component {
  state = {
    reduceMotionEnabled: false,
    screenReaderEnabled: false,
  };

  componentDidMount() {
    this.reduceMotionChangedSubscription = AccessibilityInfo.addEventListener(
      'reduceMotionChanged',
      reduceMotionEnabled => {
        this.setState({ reduceMotionEnabled });
      }
    );
    this.screenReaderChangedSubscription = AccessibilityInfo.addEventListener(
      'screenReaderChanged',
      screenReaderEnabled => {
        this.setState({ screenReaderEnabled });
      }
    );

    AccessibilityInfo.isReduceMotionEnabled().then(reduceMotionEnabled => {
      this.setState({ reduceMotionEnabled });
    });
    AccessibilityInfo.isScreenReaderEnabled().then(screenReaderEnabled => {
      this.setState({ screenReaderEnabled });
    });
  }

  componentWillUnmount() {
    this.reduceMotionChangedSubscription.remove();
    this.screenReaderChangedSubscription.remove();
  }

  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.status}>
          The reduce motion is{' '}
          {this.state.reduceMotionEnabled ? 'enabled' : 'disabled'}.
        </Text>
        <Text style={styles.status}>
          The screen reader is{' '}
          {this.state.screenReaderEnabled ? 'enabled' : 'disabled'}.
        </Text>
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
  status: {
    margin: 30,
  },
});

export default AccessibilityStatusExample;

التوابع

‎‎addEventListener()‎‎

static addEventListener(eventName, handler)

أضف معالج أحداث. الأحداث المدعومة:

  • ‎‎announcementFinished‎‎: حدث iOS فقط. يُطلَق عندما ينتهي قارئ الشاشة من إصدار إعلان. المعامل المُمرَّر إلى معالج الأحداث هو قاموس يحتوي على المفاتيح التاليّة:
    • ‎‎announcement‎‎: السلسلة النصيّة التي أعلنها قارئ الشاشة.
    • ‎‎success‎‎: قيمة منطقيّة تُشير إلى ما إذا تمّ الإعلان بنجاح.
  • ‎‎boldTextChanged‎‎: حدث iOS فقط. يُطلَق عندما تتغير حالة تبديل النص الغامق (bold text toggle). تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎true‎‎ عند تمكين النص الغامق والقيمة ‎‎ ‎‎false‎‎ في غير ذلك.
  • ‎‎grayscaleChanged‎‎: حدث iOS فقط. يُطلَق عندما تتغير حالة تبديل التدرّج الرمادي. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎true‎‎ عند تمكين التدرّج الرمادي والقيمة ‎‎ ‎‎false‎‎ في غير ذلك.
  • ‎‎invertColorsChanged‎‎: حدث iOS فقط. يُطلَق عندما تتغير حالة تبديل قلب الألوان. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎true‎‎ عند تمكين قلب الألوان والقيمة ‎‎ ‎‎false‎‎ في غير ذلك.
  • ‎‎reduceMotionChanged‎‎: يُطلَق عندما تتغير حالة تبديل تقليل الحركة، تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎true‎‎ عند تمكين تقليل الحركة (أو عندما يكون "مقياس الحركة الانتقالية (Transition Animation Scale)" في "خيارات المطور" مضبوطًا على "Animation off") والقيمة ‎‎ ‎‎false‎‎ في غير ذلك.
  • ‎‎reduceTransparencyChanged‎‎: حدث iOS فقط. يُطلَق عندما تتغير حالة تبديل تقليل الشفافية. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎true‎‎ عند تمكين تقليل الشفافية والقيمة ‎‎ ‎‎false‎‎ في غير ذلك.
  • ‎‎screenReaderChanged‎‎: يُطلَق عندما تتغير حالة تبديل قارئ الشاشة. تُمرَّر قيمةٌ منطقيّة إلى معالج الأحداث كمعامل. تكون القيمة المنطقيّةُ القيمةَ ‎‎true‎‎ عند تمكين قارئ الشاشة والقيمة ‎‎ ‎‎false‎‎ في غير ذلك.

‎‎announceForAccessibility()‎‎

static announceForAccessibility(announcement)

اكتب سلسلة نصيّةً ليُعلِنَها قارئ الشاشة.

()getRecommendedTimeoutMillis

static getRecommendedTimeoutMillis(originalTimeout)

اجلب المهلة التي يحتاج إليها المستخدم بالميلي ثانية.

تضبط هذه القيمة في خيار "Time to take action (Accessibility timeout)" (الوقت المطلوب لتنفيذ إجراء (مهلة تساعد في تطبيق سهولة الوصول) وذلك من خيارات سهولة الوصول (إمكانية الوصول Accessibility).

المعاملات:

الاسم النوع مطلوب الوصف
originalTimeout عدد نعم المهلة المراد إعادتها إن لم يكن خيار "Accessibility timeout" (مهلة تساعد في تطبيق سهولة الوصول) مضبوطًا بعد، وتكون بواحدة الميلي ثانية.

‎‎isBoldTextEnabled()‎‎

static isBoldTextEnabled()

نظام iOS فقط. الاستعلام عمّا إذا كان نصٌّ غامقٌ ممكّنًا حاليًا. تُعيد وعدًا يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎true‎‎ عند تمكين النص الغامق، والقيمة ‎‎false‎‎ في غير ذلك.

‎‎isGrayscaleEnabled()‎‎

static isGrayscaleEnabled()

نظام iOS فقط. الاستعلام عمّا إذا كان التدرج الرمادي (grayscale) مُمكَّنًا حاليًا. تُعيد وعدًا يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎true‎‎ عند تمكين التدرج الرمادي، والقيمة ‎‎false‎‎ في غير ذلك.

‎‎isInvertColorsEnabled()‎‎

static isInvertColorsEnabled()

نظام iOS فقط. الاستعلام عمّا إذا كان قلب الألوان مُمكَّنًا حاليًا. تُعيد وعدًا يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎true‎‎ عند تمكين قلب الألوان، والقيمة ‎‎false‎‎ في غير ذلك.

‎‎isReduceMotionEnabled()‎‎

static isReduceMotionEnabled()

الاستعلام عمّا إذا كان خيار تقليل الحركة مُمكَّنًا حاليًا. تُعيد وعدًا يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎true‎‎ عند تمكين تقليل الحركة، والقيمة ‎‎false‎‎ في غير ذلك.

‎‎isReduceTransparencyEnabled()‎‎

static isReduceTransparencyEnabled()

نظام iOS فقط. الاستعلام عمّا إذا كان خيار تقليل الشفافية مُمكَّنًا حاليًا. تُعيد وعدًا يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎true‎‎ عند تمكين تقليل الشفافية، والقيمة ‎‎false‎‎ في غير ذلك.

‎‎isScreenReaderEnabled()‎‎

static isScreenReaderEnabled()

الاستعلام عمّا إذا كان قارئ شاشةٍ مُمكَّنًا حاليًا. تُعيد وعدًا يُقرِّر (resolve) قيمة منطقية. تكون النتيجةُ القيمةَ ‎‎true‎‎ عند تمكين قارئ الشاشة، والقيمة ‎‎false‎‎ في غير ذلك.

‎‎setAccessibilityFocus()‎‎

static setAccessibilityFocus(reactTag)

اضبط تركيز إمكانية الوصول على مكوّن React. على Android، هذا يستدعي التابع UIManager.sendAccessibilityEvent مع تمرير الوسيط reactTag والوسيط UIManager.AccessibilityEventTypes.typeViewFocused إليه:

UIManager.sendAccessibilityEvent(reactTag, UIManager.AccessibilityEventTypes.typeViewFocused);

‎‎removeEventListener()‎‎

static removeEventListener(eventName, handler)

إزالة معالج أحداثٍ.

مهمل: استعمل التابع remove()‎ عند الاشتراك بالحدث الذي يعيده AddEventListener()‎.

مصادر