यदि आपके पास keyboardType='numeric'कोई समस्या नहीं है , तो कीबोर्ड को खारिज करने की समस्या और अधिक गंभीर हो जाती है , क्योंकि इसे खारिज करने का कोई तरीका नहीं है।
स्क्रॉलव्यू के साथ दृश्य को बदलना एक सही समाधान नहीं है, जैसे कि आपके पास कई textInputएस या buttonएस हैं, उन पर टैप करते समय कीबोर्ड ऊपर है केवल कीबोर्ड को खारिज कर देगा।
सही तरीका यह है कि देखें TouchableWithoutFeedbackऔर कॉल करेंKeyboard.dismiss()
संपादित करें: अब आप उपयोग कर सकते हैं ScrollViewके साथ keyboardShouldPersistTaps='handled'करने के लिए केवल कीबोर्ड ख़ारिज जब नल बच्चों द्वारा नियंत्रित नहीं कर रहा है (यानी अन्य textInputs या बटन टैप।)
यदि आपके पास है
<View style={{flex: 1}}>
<TextInput keyboardType='numeric'/>
</View>
इसे बदलें
<ScrollView contentContainerStyle={{flexGrow: 1}}
keyboardShouldPersistTaps='handled'
>
<TextInput keyboardType='numeric'/>
</ScrollView>
या
import {Keyboard} from 'react-native'
<TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>
<View style={{flex: 1}}>
<TextInput keyboardType='numeric'/>
</View>
</TouchableWithoutFeedback>
संपादित करें: आप कीबोर्ड को खारिज करने के लिए एक उच्च आदेश घटक भी बना सकते हैं।
import React from 'react';
import { TouchableWithoutFeedback, Keyboard, View } from 'react-native';
const DismissKeyboardHOC = (Comp) => {
return ({ children, ...props }) => (
<TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>
<Comp {...props}>
{children}
</Comp>
</TouchableWithoutFeedback>
);
};
const DismissKeyboardView = DismissKeyboardHOC(View)
बस इसे इस तरह से उपयोग करें
...
render() {
<DismissKeyboardView>
<TextInput keyboardType='numeric'/>
</DismissKeyboardView>
}
नोट: accessible={false}इनपुट फॉर्म वॉयसओवर के माध्यम से सुलभ होना जारी रखने के लिए आवश्यक है। दृष्टिबाधित लोग आपको धन्यवाद देंगे!