الفرق بين المراجعتين لصفحة: «ReactNative/touchablenativefeedback»

من موسوعة حسوب
رفع المحتوى
 
طلا ملخص تعديل
 
(مراجعتان متوسطتان بواسطة مستخدمين اثنين آخرين غير معروضتين)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:المكون TouchableNativeFeedback في ReactNative}}</noinclude>
<noinclude>{{DISPLAYTITLE:المكون TouchableNativeFeedback في ReactNative}}</noinclude><blockquote>'''ملاحظة''': إذا كنت تريد طريقةً أكثر شمولية للتعامل مع عناصر الإدخال باللمس فاطّلع على واجهة  [[ReactNative/pressable|<code>Pressable</code>]].</blockquote>يُستعمل المكون <code>TouchableNativeFeedback</code> للاستجابة لأحداث اللمس على أجهزة أندرويد. ويستخدِم الحالة الأصلية المرسومة لعرض الملاحظات.
'''ملاحظة''': إذا كنت تريد طريقةً أكثر شمولية للتعامل مع عناصر الإدخال باللمس اطّلع على [https://reactnative.dev/docs/pressable واجهة <code>Pressable</code> البرمجية].


يُستعمل المكون <code>TouchableNativeFeedback</code> للاستجابة لأحداث اللمس على أجهزة أندرويد. ويستخدِم الحالة الأصلية المرسومة لعرض الملاحظات.
يجب أن يكون للمكون <code>[[ReactNative/touchablehighlight|TouchableHighlight]]</code> ابن '''واحد فقط''' وذلك لأنَّ تكوينه يعتمد على استبدال هذا الابن بعقدة <code>RTCView</code> وتعيين بعض الخصائص الإضافية عليها. وعند عدَّة أبناء يجب وضعهم داخل المكون <code>[[ReactNative/view|View]]</code>.
 
يجب أن يكون للمكون <code>TouchableHighlight</code> ابن '''واحد فقط''' وذلك لأنَّ تكوينه يعتمد على استبدال هذا الابن بعقدة <code>RTCView</code> وتعيين بعض الخصائص الإضافية عليها. وعند عدَّة أبناء يجب وضعهم داخل المكون <code>View</code>.


يمكن تخصيص خلفية عرض التعليقات باستخدام خاصية <code>background</code>.
يمكن تخصيص خلفية عرض التعليقات باستخدام خاصية <code>background</code>.


'''مثال'''
== مثال ==
إليك المثال التالي ([https://snack.expo.dev/@hsoubwiki/touchablenativefeedback-android-component-example تجربة حية]):<syntaxhighlight class="react" lang="javascript">import React, { useState } from "react";
import { Text, View, StyleSheet, TouchableNativeFeedback, StatusBar } from "react-native";


<syntaxhighlight class="react">import React, { useState } from "react";
import { Text, View, StyleSheet, TouchableNativeFeedback } from "react-native";
import Constants from "expo-constants";
const randomHexColor = () => {
  return "#000000".replace(/0/g, function() {
    return (~~(Math.random() * 16)).toString(16);
  });
};
const App = () => {
const App = () => {
   const [rippleColor, setRippleColor] = useState(randomHexColor());
   const [rippleColor, setRippleColor] = useState(randomHexColor());
سطر 37: سطر 27:
     </View>
     </View>
   );
   );
};
const randomHexColor = () => {
  return "#000000".replace(/0/g, function() {
    return (~~(Math.random() * 16)).toString(16);
  });
};
};


سطر 43: سطر 39:
     flex: 1,
     flex: 1,
     justifyContent: "center",
     justifyContent: "center",
     paddingTop: Constants.statusBarHeight,
     paddingTop: StatusBar.currentHeight,
     backgroundColor: "#ecf0f1",
     backgroundColor: "#ecf0f1",
     padding: 8
     padding: 8
سطر 56: سطر 52:
== الخاصيات ==
== الخاصيات ==


يرث خاصيّات المكون [https://reactnative.dev/docs/touchablewithoutfeedback#props <code>TouchableWithoutFeedback</code>].
يرث خاصيّات المكون <code>[[ReactNative/touchablewithoutfeedback|TouchableWithoutFeedback]]</code>.


=== <code>background</code> ===
=== <code>background</code> ===


تُحدد نوع الخلفية التي يجب استعمالها لعرض ردود الأفعال عند اللمس. وتأخذ كائن (Object) يحتوي على الخاصية <code>type</code> والتي تُحدد نوع الخلفية، وبيانات إضافية تعتمد على النوع المُحدد. ويُفضَّل استخدام إحدى الطرق الثابتة لإنشاء هذا القاموس.
تُحدد نوع الخلفية التي يجب استعمالها لعرض ردود الأفعال عند اللمس، وتأخذ كائن (Object) يحتوي على الخاصية <code>type</code> والتي تُحدّد نوع الخلفية وبيانات إضافية تعتمد على النوع المُحدَّد. ويُفضَّل استخدام إحدى الطرق الثابتة لإنشاء هذا القاموس.


{| class="wikitable"
{| class="wikitable"
سطر 66: سطر 62:
! مطلوب
! مطلوب
|-
|-
| backgroundPropType
| <code>backgroundPropType</code>
| لا
| لا
|}
|}
=== <code>useForeground</code> ===
=== <code>useForeground</code> ===


تضيف تأثير التموج إلى مقدمة العرض عندما تكون قيمتها <code>true</code>. تكون هذه الخاصية مفيدة إذا كانت لأحد العناصر الأبناء خلفيه خاصه به، أو إذا كنت تريد عرض صور في الخلفية ولا تريدها أن تتغطى بتأثير التموج.
تضيف تأثير التموج إلى مقدمة العرض عندما تكون قيمتها <code>true</code>. تكون هذه الخاصية مفيدةً إذا كانت لأحد العناصر الأبناء خلفيةً خاصةً به، أو إذا كنت تريد عرض صور في الخلفية ولا تريدها أن تتغطى بتأثير التموج.


'''ملاحظة''': تحقق من <code>TouchableNativeFeedback.canUseNativeForeground()</code> قبل استخدام هذه الخاصية، وذلك لأنها متاحة فقط على الاصدار السادس من نظام التشغيل أندرويد والإصدارات اللاحقة له، وعند استخدامها على إصدارات قديمة سيتسبب ذلك في ظهور تحذيرات والعودة للخلفية.
'''ملاحظة''': تحقّق من <code>()TouchableNativeFeedback.canUseNativeForeground</code> قبل استخدام هذه الخاصية، وذلك لأنها متاحة فقط على الاصدار السادس من نظام التشغيل أندرويد والإصدارات اللاحقة له، وعند استخدامها على إصدارات قديمة سيتسبب ذلك في ظهور تحذيرات والعودة للخلفية.


{| class="wikitable"
{| class="wikitable"
سطر 85: سطر 78:
| لا
| لا
|}
|}
=== <code>hasTVPreferredFocus</code> ===
=== <code>hasTVPreferredFocus</code> ===


تعمل فقط على أجهزة Apple TV.
تعمل فقط على أجهزة Apple TV وتحدد التركيز المفضل.


[https://wiki.hsoub.com/ReactNative/view انظر توثيق المكون <code>View</code>.]
أُنظر توثيق المكوّن [[ReactNative/view|<code>View</code>.]]


{| class="wikitable"
{| class="wikitable"
سطر 103: سطر 93:
| أندرويد
| أندرويد
|}
|}
=== <code>nextFocusDown</code> ===
=== <code>nextFocusDown</code> ===


[https://wiki.hsoub.com/ReactNative/view انظر توثيق المكون <code>View</code>.]
تحدد التركيز التالي عند الضغط للأسفل على أجهزة التلفاز TV. أُنظر توثيق المكوّن [[ReactNative/view|<code>View</code>.]]


{| class="wikitable"
{| class="wikitable"
سطر 119: سطر 106:
| أندرويد
| أندرويد
|}
|}
=== <code>nextFocusForwad</code> ===
=== <code>nextFocusForwad</code> ===


انظر توثيق المكون <code>View</code>.](https://wiki.hsoub.com/ReactNative/view)
تحدد التركيز التالي عند الضغط للأمام على أجهزة التلفاز TV.أُنظر توثيق المكوّن [[ReactNative/view|<code>View</code>.]]


{| class="wikitable"
{| class="wikitable"
سطر 135: سطر 119:
| أندرويد
| أندرويد
|}
|}
=== <code>nextFocusLeft</code> ===
=== <code>nextFocusLeft</code> ===


انظر توثيق المكون <code>View</code>.](https://wiki.hsoub.com/ReactNative/view)
تحدد التركيز التالي عند الضغط لليسار على أجهزة التلفاز TV.أُنظر توثيق المكوّن [[ReactNative/view|<code>View</code>.]]


{| class="wikitable"
{| class="wikitable"
سطر 151: سطر 132:
| أندرويد
| أندرويد
|}
|}
=== <code>nextFocusRight</code> ===
=== <code>nextFocusRight</code> ===


انظر توثيق المكون <code>View</code>.](https://wiki.hsoub.com/ReactNative/view)
تحدد التركيز التالي عند الضغط لليمين على أجهزة التلفاز TV.أُنظر توثيق المكوّن [[ReactNative/view|<code>View</code>.]]


{| class="wikitable"
{| class="wikitable"
سطر 167: سطر 145:
| أندرويد
| أندرويد
|}
|}
=== <code>nextFocusUp</code> ===
=== <code>nextFocusUp</code> ===


انظر توثيق المكون <code>View</code>.](https://wiki.hsoub.com/ReactNative/view)
تحدد التركيز التالي عند الضغط للأعلى على أجهزة التلفاز TV.أُنظر توثيق المكوّن [[ReactNative/view|<code>View</code>.]]


{| class="wikitable"
{| class="wikitable"
سطر 183: سطر 158:
| أندرويد
| أندرويد
|}
|}
 
== التوابع ==
 
 
== مرجع الدوال ==


=== <code>‎SelectableBackground()‎</code> ===
=== <code>‎SelectableBackground()‎</code> ===


<syntaxhighlight class="react">static SelectableBackground(rippleRadius: ?number)</syntaxhighlight>
<syntaxhighlight class="react" lang="javascript">static SelectableBackground(rippleRadius: ?number)</syntaxhighlight>
تُنشئ صنف يمثل الخلفية الإفتراضية لمظهر نظام التشغيل للعناصر القابلة للتحديد. يُحدد المعامل <code>rippleRadius</code> نصف قطر تأثير التموج.
تُنشئ صنف يمثل الخلفية الإفتراضية لمظهر نظام التشغيل للعناصر القابلة للتحديد. يُحدِّد المعامل <code>rippleRadius</code> نصف قطر تأثير التموج.
 
 
=== <code>‎selectableBackgoundBorderless()‎</code> ===
=== <code>‎selectableBackgoundBorderless()‎</code> ===


<syntaxhighlight class="">static SelectableBackgroundBorderless(rippleRadius: ?number)</syntaxhighlight>
<syntaxhighlight class="" lang="javascript">static SelectableBackgroundBorderless(rippleRadius: ?number)</syntaxhighlight>
تُنشئ صنف يمثل الخلفية الإفتراضية لمظهر نظام التشغيل للعناصر القابلة للتحديد التي ليس لها إطارات. يُحدد المعامل <code>rippleRadius</code> نصف قطر تأثير التموج.
تُنشئ صنف يمثل الخلفية الإفتراضية لمظهر نظام التشغيل للعناصر القابلة للتحديد التي ليس لها إطارات (‎?android:attr/selectableItemBackgroundBorderless)، ويُحدد المعامل <code>rippleRadius</code> نصف قطر تأثير التموج. متاح على واجهة Android ذات المستوى 21 وما بعد.
 
 
=== <code>‎Ripple()‎</code> ===
=== <code>‎Ripple()‎</code> ===
<syntaxhighlight class="">static Ripple(color: string, borderless: boolean, rippleRadius: ?number)</syntaxhighlight>
<syntaxhighlight class="" lang="javascript">static Ripple(color: string, borderless: boolean, rippleRadius: ?number)</syntaxhighlight>
تُنشئ صنف يمثل تأثير التموج بلون معين. إذا كانت قيمة الخاصية <code>borderless</code> هي <code>true</code> يُعرض التموج خارج إطار العنصر.
تُنشئ صنف يمثل تأثير التموج بلون معين، فإذا كانت قيمة الخاصية <code>borderless</code> هي <code>true</code> يُعرض التموج خارج إطار العنصر (انظر إلى الأزرار actionbar الأصيلة لمثال على ذلك السلوك). هذا النوع من الخلفيات متاح على واجهة Android ذات المستوى 21 وما بعد.


'''المعاملات'''
'''المعاملات:'''


{| class="wikitable"
{| class="wikitable"
سطر 212: سطر 180:
! الوصف
! الوصف
|-
|-
| color
| <code>[[ReactNative/colors|color]]</code>
| سلسلة نصية (string)
| سلسلة نصية (string)
| نعم
| نعم
| يُحدد لون تأثير التموج.
| يُحدد لون تأثير التموج.
|-
|-
| borderless
| <code>borderless</code>
| قيمة منطقية (boolean)
| قيمة منطقية (boolean)
| نعم
| نعم
| يُحدد ما إذا كان تأثير التموج سيعرض داخل إطار العنصر أم خارجه.
| يُحدد ما إذا كان تأثير التموج سيعرض داخل إطار العنصر أم خارجه.
|-
|-
| rippleRadius
| <code>rippleRadius</code>
| رقم (?number)
| عدد؟ (?number)
| لا
| لا
| يُحدد نصف قطر تأثير التموج.
| يُحدد نصف قطر تأثير التموج.
سطر 230: سطر 198:
=== <code>‎canUseNativeBackground()‎</code> ===
=== <code>‎canUseNativeBackground()‎</code> ===


<syntaxhighlight class="">static canUseNativeForeground()</syntaxhighlight>
<syntaxhighlight class="" lang="javascript">static canUseNativeForeground()</syntaxhighlight>
== المصادر ==
== المصادر ==


[https://reactnative.dev/docs/touchablenativefeedback صفحة TouchableNativeFeedback قي توثيق React Native الرسمي].
[https://reactnative.dev/docs/touchablenativefeedback صفحة TouchableNativeFeedback قي توثيق React Native الرسمي].
[[تصنيف: ReactNative]]
[[تصنيف: ReactNative]]
[[تصنيف:React Native Component]]

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

ملاحظة: إذا كنت تريد طريقةً أكثر شمولية للتعامل مع عناصر الإدخال باللمس فاطّلع على واجهة Pressable.

يُستعمل المكون TouchableNativeFeedback للاستجابة لأحداث اللمس على أجهزة أندرويد. ويستخدِم الحالة الأصلية المرسومة لعرض الملاحظات.

يجب أن يكون للمكون TouchableHighlight ابن واحد فقط وذلك لأنَّ تكوينه يعتمد على استبدال هذا الابن بعقدة RTCView وتعيين بعض الخصائص الإضافية عليها. وعند عدَّة أبناء يجب وضعهم داخل المكون View.

يمكن تخصيص خلفية عرض التعليقات باستخدام خاصية background.

مثال

إليك المثال التالي (تجربة حية):

import React, { useState } from "react";
import { Text, View, StyleSheet, TouchableNativeFeedback, StatusBar } from "react-native";

const App = () => {
  const [rippleColor, setRippleColor] = useState(randomHexColor());
  const [rippleOverflow, setRippleOverflow] = useState(false);
  return (
    <View style={styles.container}>
      <TouchableNativeFeedback
        onPress={() => {
          setRippleColor(randomHexColor());
          setRippleOverflow(!rippleOverflow);
        }}
        background={TouchableNativeFeedback.Ripple(rippleColor, rippleOverflow)}
      >
        <View style={styles.touchable}>
          <Text style={styles.text}>TouchableNativeFeedback</Text>
        </View>
      </TouchableNativeFeedback>
    </View>
  );
};

const randomHexColor = () => {
  return "#000000".replace(/0/g, function() {
    return (~~(Math.random() * 16)).toString(16);
  });
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: "center",
    paddingTop: StatusBar.currentHeight,
    backgroundColor: "#ecf0f1",
    padding: 8
  },
  touchable: { flex: 0.5, borderColor: "black", borderWidth: 1 },
  text: { alignSelf: "center" }
});

export default App;

الخاصيات

يرث خاصيّات المكون TouchableWithoutFeedback.

background

تُحدد نوع الخلفية التي يجب استعمالها لعرض ردود الأفعال عند اللمس، وتأخذ كائن (Object) يحتوي على الخاصية type والتي تُحدّد نوع الخلفية وبيانات إضافية تعتمد على النوع المُحدَّد. ويُفضَّل استخدام إحدى الطرق الثابتة لإنشاء هذا القاموس.

النوع مطلوب
backgroundPropType لا

useForeground

تضيف تأثير التموج إلى مقدمة العرض عندما تكون قيمتها true. تكون هذه الخاصية مفيدةً إذا كانت لأحد العناصر الأبناء خلفيةً خاصةً به، أو إذا كنت تريد عرض صور في الخلفية ولا تريدها أن تتغطى بتأثير التموج.

ملاحظة: تحقّق من ()TouchableNativeFeedback.canUseNativeForeground قبل استخدام هذه الخاصية، وذلك لأنها متاحة فقط على الاصدار السادس من نظام التشغيل أندرويد والإصدارات اللاحقة له، وعند استخدامها على إصدارات قديمة سيتسبب ذلك في ظهور تحذيرات والعودة للخلفية.

النوع مطلوب
قيمة منطقية (bool) لا

hasTVPreferredFocus

تعمل فقط على أجهزة Apple TV وتحدد التركيز المفضل.

أُنظر توثيق المكوّن View.

النوع مطلوب نظام التشغيل
قيمة منطقية (bool) لا أندرويد

nextFocusDown

تحدد التركيز التالي عند الضغط للأسفل على أجهزة التلفاز TV. أُنظر توثيق المكوّن View.

النوع مطلوب نظام التشغيل
قيمة منطقية (bool) لا أندرويد

nextFocusForwad

تحدد التركيز التالي عند الضغط للأمام على أجهزة التلفاز TV.أُنظر توثيق المكوّن View.

النوع مطلوب نظام التشغيل
قيمة منطقية (bool) لا أندرويد

nextFocusLeft

تحدد التركيز التالي عند الضغط لليسار على أجهزة التلفاز TV.أُنظر توثيق المكوّن View.

النوع مطلوب نظام التشغيل
قيمة منطقية (bool) لا أندرويد

nextFocusRight

تحدد التركيز التالي عند الضغط لليمين على أجهزة التلفاز TV.أُنظر توثيق المكوّن View.

النوع مطلوب نظام التشغيل
قيمة منطقية (bool) لا أندرويد

nextFocusUp

تحدد التركيز التالي عند الضغط للأعلى على أجهزة التلفاز TV.أُنظر توثيق المكوّن View.

النوع مطلوب نظام التشغيل
قيمة منطقية (bool) لا أندرويد

التوابع

‎SelectableBackground()‎

static SelectableBackground(rippleRadius: ?number)

تُنشئ صنف يمثل الخلفية الإفتراضية لمظهر نظام التشغيل للعناصر القابلة للتحديد. يُحدِّد المعامل rippleRadius نصف قطر تأثير التموج.

‎selectableBackgoundBorderless()‎

static SelectableBackgroundBorderless(rippleRadius: ?number)

تُنشئ صنف يمثل الخلفية الإفتراضية لمظهر نظام التشغيل للعناصر القابلة للتحديد التي ليس لها إطارات (‎?android:attr/selectableItemBackgroundBorderless)، ويُحدد المعامل rippleRadius نصف قطر تأثير التموج. متاح على واجهة Android ذات المستوى 21 وما بعد.

‎Ripple()‎

static Ripple(color: string, borderless: boolean, rippleRadius: ?number)

تُنشئ صنف يمثل تأثير التموج بلون معين، فإذا كانت قيمة الخاصية borderless هي true يُعرض التموج خارج إطار العنصر (انظر إلى الأزرار actionbar الأصيلة لمثال على ذلك السلوك). هذا النوع من الخلفيات متاح على واجهة Android ذات المستوى 21 وما بعد.

المعاملات:

الإسم النوع مطلوب الوصف
color سلسلة نصية (string) نعم يُحدد لون تأثير التموج.
borderless قيمة منطقية (boolean) نعم يُحدد ما إذا كان تأثير التموج سيعرض داخل إطار العنصر أم خارجه.
rippleRadius عدد؟ (?number) لا يُحدد نصف قطر تأثير التموج.

‎canUseNativeBackground()‎

static canUseNativeForeground()

المصادر

صفحة TouchableNativeFeedback قي توثيق React Native الرسمي.