patternreactCritical
Hide keyboard in react-native
Viewed 0 times
hidenativereactkeyboard
Problem
If I tap onto a textinput, I want to be able to tap somewhere else in order to dismiss the keyboard again (not the return key though). I haven't found the slightest piece of information concerning this in all the tutorials and blog posts that I read.
This basic example is still not working for me with react-native 0.4.2 in the Simulator. Couldn't try it on my iPhone yet.
This basic example is still not working for me with react-native 0.4.2 in the Simulator. Couldn't try it on my iPhone yet.
Welcome to React Native!
To get started, edit index.ios.js
Press Cmd+R to reload,{'\n'}
Cmd+D or shake for dev menu
Solution
The problem with keyboard not dismissing gets more severe if you have
Replacing View with ScrollView is not a correct solution, as if you have multiple
Correct way is to encapsulate View with
EDIT: You can now use
If you have
Change it to
or
EDIT: You can also create a Higher Order Component to dismiss the keyboard.
Simply use it like this
NOTE: the
keyboardType='numeric', as there is no way to dismiss it.Replacing View with ScrollView is not a correct solution, as if you have multiple
textInputs or buttons, tapping on them while the keyboard is up will only dismiss the keyboard.Correct way is to encapsulate View with
TouchableWithoutFeedback and calling Keyboard.dismiss()EDIT: You can now use
ScrollView with keyboardShouldPersistTaps='handled' to only dismiss the keyboard when the tap is not handled by the children (ie. tapping on other textInputs or buttons)If you have
Change it to
or
import {Keyboard} from 'react-native'
EDIT: You can also create a Higher Order Component to dismiss the keyboard.
import React from 'react';
import { TouchableWithoutFeedback, Keyboard, View } from 'react-native';
const DismissKeyboardHOC = (Comp) => {
return ({ children, ...props }) => (
{children}
);
};
const DismissKeyboardView = DismissKeyboardHOC(View)
Simply use it like this
...
render() {
}
NOTE: the
accessible={false} is required to make the input form continue to be accessible through VoiceOver. Visually impaired people will thank you!Context
Stack Overflow Q#29685421, score: 925
Revisions (0)
No revisions yet.