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 textInput
s veya s'niz varmış gibi button
, klavye varken onlara dokunmak yalnızca klavyeyi kapatır.
Doğru yol, Görünümü TouchableWithoutFeedback
ve çağrıyı kapsüllemekKeyboard.dismiss()
DÜZENLEME: Artık kullanabilirsiniz ScrollView
ile 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!