Kapatmamanın bir yolu olmadığından, klavyeyi kapatmama sorunu daha şiddetli hale keyboardType='numeric'gelir.
Görünümü ScrollView ile değiştirmek doğru bir çözüm değildir, sanki birden çok textInputs veya s'niz varmış gibi button, klavye varken onlara dokunmak yalnızca klavyeyi kapatır.
Doğru yol, Görünümü TouchableWithoutFeedbackve çağrıyı kapsüllemekKeyboard.dismiss()
DÜZENLEME: Artık kullanabilirsiniz ScrollViewile keyboardShouldPersistTaps='handled'musluk çocuklar tarafından işlenen değilken sadece Klavyeyi kapatmak için (yani diğer textInputs veya düğmelere dokunarak,.)
Eğer varsa
<View style={{flex: 1}}>
<TextInput keyboardType='numeric'/>
</View>
Olarak değiştir
<ScrollView contentContainerStyle={{flexGrow: 1}}
keyboardShouldPersistTaps='handled'
>
<TextInput keyboardType='numeric'/>
</ScrollView>
veya
import {Keyboard} from 'react-native'
<TouchableWithoutFeedback onPress={Keyboard.dismiss} accessible={false}>
<View style={{flex: 1}}>
<TextInput keyboardType='numeric'/>
</View>
</TouchableWithoutFeedback>
DÜZENLE: Klavyeyi kapatmak için bir Yüksek Sipariş Bileşeni de oluşturabilirsiniz.
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)
Sadece böyle kullanın
...
render() {
<DismissKeyboardView>
<TextInput keyboardType='numeric'/>
</DismissKeyboardView>
}
NOT: accessible={false}giriş formunun VoiceOver aracılığıyla erişilebilir olmasını sağlamak için gereklidir. Görme engelli insanlar size teşekkür edecek!