الفرق بين المراجعتين لصفحة: «ReactNative/keyboard»
رقية-بورية (نقاش | مساهمات) أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:Keyboard في React Native}}</noinclude> تُستخدم وحدة <code>Keyboard</code> للتحكّم بأحداث لوحة المفاتيح. _...' |
رقية-بورية (نقاش | مساهمات) ط مراجعة |
||
سطر 1: | سطر 1: | ||
<noinclude>{{DISPLAYTITLE:Keyboard في React Native}}</noinclude> | <noinclude>{{DISPLAYTITLE:Keyboard في React Native}}</noinclude> | ||
تُستخدم وحدة <code>Keyboard</code> | تُستخدم وحدة <code>Keyboard</code> للتّحكّم بأحداث لوحة المفاتيح. | ||
__toc__ | __toc__ | ||
== الاستخدام == | == الاستخدام == | ||
تسمح وحدة Keyboard | تسمح وحدة <code>Keyboard</code> بالتّنصّت (listen) للأحداث الأصيّلة (native) والاستجابة لها، بالإضافة لإجراء تغييرات في لوحة المفاتيح كإلغائها. | ||
* مثال لمكوِّن الدالّة (Function Component) | * مثال لمكوِّن الدالّة (Function Component) | ||
سطر 97: | سطر 97: | ||
== التوابع == | == التوابع == | ||
=== <code> | === <code>()addListener</code> === | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
static addListener(eventName, callback) | static addListener(eventName, callback) | ||
</syntaxhighlight>يوصل هذا التابع تابع JavaScript بالحدث المعرَّف، بإشعار لوحة المفاتيح الأصيلة، وعندها يعيد هذا التابع مرجعًا إلى المُنصت (listener). | </syntaxhighlight>يوصل هذا التابع تابع <code>JavaScript</code> بالحدث المعرَّف، بإشعار لوحة المفاتيح الأصيلة، وعندها يعيد هذا التابع مرجعًا إلى المُنصت (listener). | ||
==== المعاملات ==== | ==== المعاملات ==== | ||
سطر 117: | سطر 117: | ||
|دالة (function) | |دالة (function) | ||
|نعم | |نعم | ||
| | |الدّالة التّي سيتم استدعاؤها عند إطلاق الحدث | ||
|} | |} | ||
سطر 129: | سطر 129: | ||
* <code>keyboardWillChangeFrame</code> | * <code>keyboardWillChangeFrame</code> | ||
* <code>keyboardDidChangeFrame</code> | * <code>keyboardDidChangeFrame</code> | ||
<blockquote>'''ملاحظة:''' إذا وضعت <code>android:windowSoftInputMode</code> مساويةً للقيمة <code>adjustResize</code>، أو <code>adjustPan</code>، فإن الحدثين <code>keyboardDidShow</code>، و<code>keyboardDidHide</code> سيتوفران فقط على منصّة Android؛ أمّا إذا وضعت <code>android:windowSoftInputMode</code> مساويةً للقيمة <code>adjustNothing</code>، فلن يتوفر أي حدثٍ على منصة Android، وعادة لا يتوفر الحدثان <code>keyboardWillShow</code>، و<code>keyboardWillHide</code> على منصة Android بسبب عدم وجود أحداثٍ أصيلةٍ موافقةٍ لهما. </blockquote> | |||
=== <code>()removeListener</code> === | |||
=== <code> | |||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
static removeListener(eventName, callback) | static removeListener(eventName, callback) | ||
سطر 147: | سطر 146: | ||
|سلسلة نصية (string) | |سلسلة نصية (string) | ||
|نعم | |نعم | ||
|<code>nativeEvent</code>هي سلسلة | |<code>nativeEvent</code> هي سلسلة نصّية تعرّف الحدث الذي تنصت له | ||
|- | |- | ||
|<code>callback</code> | |<code>callback</code> | ||
|دالة (function) | |دالة (function) | ||
|نعم | |نعم | ||
| | |الدّالة التي سيتم استدعاؤها عند إطلاق الحدث | ||
|} | |} | ||
=== <code> | === <code>()removeAllListeners</code> === | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
static removeAllListeners(eventName) | static removeAllListeners(eventName) | ||
سطر 170: | سطر 169: | ||
|سلسلة نصية (string) | |سلسلة نصية (string) | ||
|نعم | |نعم | ||
|سلسلة نصية لمنصتات الأحداث الأصيلة التي | |سلسلة نصية لمنصتات الأحداث الأصيلة التي ستتم إزالتها | ||
|} | |} | ||
=== <code> | === <code>()dismiss</code> === | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
static dismiss() | static dismiss() | ||
</syntaxhighlight>يلغي التابع <code> | </syntaxhighlight>يلغي التابع <code>()dismiss</code> لوحة المفاتيح الفعّالة، ويزيل التركيز. | ||
=== <code> | === <code>()scheduleLayoutAnimation</code> === | ||
<syntaxhighlight lang="javascript"> | <syntaxhighlight lang="javascript"> | ||
static scheduleLayoutAnimation(event) | static scheduleLayoutAnimation(event) |
مراجعة 10:30، 21 يناير 2021
تُستخدم وحدة Keyboard
للتّحكّم بأحداث لوحة المفاتيح.
الاستخدام
تسمح وحدة Keyboard
بالتّنصّت (listen) للأحداث الأصيّلة (native) والاستجابة لها، بالإضافة لإجراء تغييرات في لوحة المفاتيح كإلغائها.
- مثال لمكوِّن الدالّة (Function Component)
import React, { useEffect } from "react";
import { Keyboard, TextInput, StyleSheet } from "react-native";
const Example = () => {
useEffect(() => {
Keyboard.addListener("keyboardDidShow", _keyboardDidShow);
Keyboard.addListener("keyboardDidHide", _keyboardDidHide);
// cleanup function
return () => {
Keyboard.removeListener("keyboardDidShow", _keyboardDidShow);
Keyboard.removeListener("keyboardDidHide", _keyboardDidHide);
};
}, []);
const _keyboardDidShow = () => {
alert("Keyboard Shown");
};
const _keyboardDidHide = () => {
alert("Keyboard Hidden");
};
return <TextInput style={s.input} placeholder='Click here ...' onSubmitEditing={Keyboard.dismiss} />;
}
const s = StyleSheet.create({
input:{
margin:60,
padding: 10,
borderWidth: 0.5,
borderRadius: 4,
backgroundColor: "#fff"
}
})
export default Example;
- مثال لمكوِّن الصنف (Class Component)
import React, {Component} from 'react';
import {Keyboard, TextInput , StyleSheet} from 'react-native';
class Example extends Component {
componentDidMount() {
this.keyboardDidShowListener = Keyboard.addListener(
'keyboardDidShow',
this._keyboardDidShow,
);
this.keyboardDidHideListener = Keyboard.addListener(
'keyboardDidHide',
this._keyboardDidHide,
);
}
componentWillUnmount() {
this.keyboardDidShowListener.remove();
this.keyboardDidHideListener.remove();
}
_keyboardDidShow() {
alert('Keyboard Shown');
}
_keyboardDidHide() {
alert('Keyboard Hidden');
}
render() {
return <TextInput style={s.input} placeholder='Click here ...' onSubmitEditing={Keyboard.dismiss} />;
}
}
const s = StyleSheet.create({
input:{
margin:60,
padding: 10,
borderWidth: 0.5,
borderRadius: 4,
backgroundColor: "#fff"
}
})
export default Example;
التوابع
()addListener
static addListener(eventName, callback)
يوصل هذا التابع تابع JavaScript
بالحدث المعرَّف، بإشعار لوحة المفاتيح الأصيلة، وعندها يعيد هذا التابع مرجعًا إلى المُنصت (listener).
المعاملات
الاسم | النوع | مطلوب | الوصف |
---|---|---|---|
eventName
|
سلسلة نصية (string) | نعم | nativeEvent هي سلسلة نصية تعرّف الحدث الذي تنصت له
|
callback
|
دالة (function) | نعم | الدّالة التّي سيتم استدعاؤها عند إطلاق الحدث |
الحدث الأصيل (nativeEvent)
يمكن أن يكون أحد الأحداث التالية:
keyboardWillShow
keyboardDidShow
keyboardWillHide
keyboardDidHide
keyboardWillChangeFrame
keyboardDidChangeFrame
ملاحظة: إذا وضعت
android:windowSoftInputMode
مساويةً للقيمةadjustResize
، أوadjustPan
، فإن الحدثينkeyboardDidShow
، وkeyboardDidHide
سيتوفران فقط على منصّة Android؛ أمّا إذا وضعتandroid:windowSoftInputMode
مساويةً للقيمةadjustNothing
، فلن يتوفر أي حدثٍ على منصة Android، وعادة لا يتوفر الحدثانkeyboardWillShow
، وkeyboardWillHide
على منصة Android بسبب عدم وجود أحداثٍ أصيلةٍ موافقةٍ لهما.
()removeListener
static removeListener(eventName, callback)
يزيل مُنصتًا معيّنًا.
المعاملات
الاسم | النوع | مطلوب | الوصف |
---|---|---|---|
eventName
|
سلسلة نصية (string) | نعم | nativeEvent هي سلسلة نصّية تعرّف الحدث الذي تنصت له
|
callback
|
دالة (function) | نعم | الدّالة التي سيتم استدعاؤها عند إطلاق الحدث |
()removeAllListeners
static removeAllListeners(eventName)
يزيل هذا التابع جميع المُنصتات الخاصة بنوع حدثٍ معيّنٍ.
المعاملات
الاسم | النوع | مطلوب | الوصف |
---|---|---|---|
eventType
|
سلسلة نصية (string) | نعم | سلسلة نصية لمنصتات الأحداث الأصيلة التي ستتم إزالتها |
()dismiss
static dismiss()
يلغي التابع ()dismiss
لوحة المفاتيح الفعّالة، ويزيل التركيز.
()scheduleLayoutAnimation
static scheduleLayoutAnimation(event)
يعتبر هذا التابع مفيدًا لمزامنة حجم TextInput (أو أيّ ملحقٍ من ملحقات إظهار لوحة المفاتيح الأخرى)، وتغيرات موقعه مع تحركات لوحة المفاتيح.