-
Notifications
You must be signed in to change notification settings - Fork 24.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TextInput.blur
is not working if with Alert
on iOS
#23076
Labels
API: Alert
Bug
Component: TextInput
Related to the TextInput component.
Platform: iOS
iOS applications.
Resolution: Locked
This issue was locked by the bot.
Comments
react-native-bot
added
API: Alert
🔶APIs
Component: TextInput
Related to the TextInput component.
labels
Jan 19, 2019
Can you run If you believe this information is irrelevant to the reported issue, you may write |
I temporarily use a workaround by making this.$input && this.$input.blur()
setTimeout(() => Alert.alert('show alert', 'desc', [
{ text: 'cancel', style: 'cancel' },
{ text: 'show', onPress: () => {
console.log('shown!!')
}},
]), 0) |
jaychsu
changed the title
Jan 20, 2019
TextInput.blur
is not working if with Alert
TextInput.blur
is not working if with Alert
on iOS
matt-oakes
pushed a commit
to matt-oakes/react-native
that referenced
this issue
Feb 7, 2019
Summary: Fixes facebook#23076 , the reason is `blur()` is managed by `UIManager`, `UIManager` maintains all operations and execute them each `batchDidComplete`, which means every time `JS` finish callback native , but `Alert` module would call directly, this mess up the order of method call, for example like below, even `this.$input.blur()` is called before `Alert.alert()`, but in native side, `Alert.alert()` is called before `this.$input.blur()`. ``` <TextInput style={{ borderWidth: 1 }} ref={$input => this.$input = $input} /> <Button title="Show Alert" onPress={() => { // // `blur` works if using without `Alert` this.$input && this.$input.blur() // // `blur` is not working Alert.alert('show alert', 'desc', [ { text: 'cancel', style: 'cancel' }, { text: 'show', onPress: () => { }}, ]) }} /> ``` [iOS] [Fixed] - Fixes alert view block first responder After fix, example like below, `blur` can works. ``` import * as React from 'react'; import { TextInput, View, Alert, Button } from 'react-native'; export default class App extends React.Component { render() { return ( <View style={{ flex: 1, justifyContent: 'center' }}> <TextInput style={{ borderWidth: 1 }} ref={$input => this.$input = $input} /> <Button title="Show Alert" onPress={() => { this.$input && this.$input.blur() Alert.alert('show alert', 'desc', [ { text: 'cancel', style: 'cancel' }, { text: 'show', onPress: () => { }}, ]) }} /> </View> ); } } ``` Pull Request resolved: facebook#23240 Differential Revision: D13915920 Pulled By: cpojer fbshipit-source-id: fe1916fcb5913e2b8128d045a6364c5e3d39c516
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
API: Alert
Bug
Component: TextInput
Related to the TextInput component.
Platform: iOS
iOS applications.
Resolution: Locked
This issue was locked by the bot.
Environment
Description
TextInput.blur
was explicitly called but not working if used inAlert.alert
. And it got work if withoutAlert.alert
.Reproducible Demo
https://snack.expo.io/@jaychsu/issue-reproduction-for-reactnative
The text was updated successfully, but these errors were encountered: