Використовуйте реактивні Native's Keyboard.dismiss()
Оновлений відповідь
React Native виявив статичний dismiss()
метод на Keyboard
, тому оновлений метод:
import { Keyboard } from 'react-native';
Keyboard.dismiss()
Оригінальний відповідь
Використовуйте dismissKeyboard
бібліотеку React Native .
У мене була дуже схожа проблема і я відчував, що я єдиний, хто цього не зрозумів.
ScrollViews
Якщо у вас є ScrollView
або щось, що успадковується від нього, як а ListView
, ви можете додати опору, яка автоматично відхилить клавіатуру на основі подій натискання або перетягування.
Реквізит є keyboardDismissMode
і може мати значення none
, interactive
або on-drag
. Більше про це можна прочитати тут .
Регулярні перегляди
Якщо у вас є щось, окрім а, ScrollView
і ви хочете, щоб будь-які натискання відхиляли клавіатуру, ви можете скористатися простим TouchableWithoutFeedback
і onPress
використовувати утиліту "React Native", dismissKeyboard
щоб відхилити клавіатуру для вас.
У вашому прикладі ви можете зробити щось подібне:
var DismissKeyboard = require('dismissKeyboard'); // Require React Native's utility library.
// Wrap your view with a TouchableWithoutFeedback component like so.
<View style={styles.container}>
<TouchableWithoutFeedback onPress={ () => { DismissKeyboard() } }>
<View>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.ios.js
</Text>
<Text style={styles.instructions}>
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
</Text>
<TextInput style={{height: 40, borderColor: 'gray', borderWidth: 1}} />
</View>
</TouchableWithoutFeedback>
</View>
Примітка: TouchableWithoutFeedback
може мати лише одну дитину, тому вам потрібно загортати все, що знаходиться під нею, як єдину, View
як показано вище.