react-native Keyboard.dismiss() 在 iOS 上自动填充后无法正常工作
react-native Keyboard.dismiss() not working after autofill on iOS
我正在使用 expo 开发一个 react-native 应用程序。
在我的登录屏幕上,我有两个 TextInputs(带有 textContentType 用户名和密码)。
我确实有多个地方可以调用 Keyboard.dismiss()
(来自包装 Touchable,来自其他按钮等),这适用于大多数用例。
我的问题是,当我在 iOS 上成功使用密码自动填充(通过指纹)后,键盘首先会自动隐藏并重新显示(触发所有常见的键盘事件),这看起来很奇怪但可以接受,但之后键盘不再对任何 Keyboard.dismiss()
调用做出反应,直到我聚焦另一个 TextInput。
"use strong password" 键盘覆盖层似乎也存在类似问题。
这是我的版本:
"expo": "^34.0.1",
"react": "16.8.3",
"react-dom": "^16.8.6",
"react-native": "https://github.com/expo/react-native/archive/sdk-34.0.0.tar.gz",
运行 在 iOS 13.2.3
的 Expo 客户端中
提前感谢您的帮助。
编辑:
我将问题简化为最基本的版本。关闭按钮工作正常,直到我在 iOS 设备上使用密码自动填充。
https://github.com/SebastianRoese/tryouts/tree/master/keyboard-dismiss-problem
import React from 'react'
import { View, Button, TextInput, StyleSheet, Keyboard } from 'react-native'
const App = () => {
return (
<View style={styles.screen}>
<TextInput style={styles.textinput} textContentType="username" />
<TextInput style={styles.textinput} secureTextEntry textContentType="password" />
<Button title="Dismiss Keyboard" onPress={() => Keyboard.dismiss()} />
</View>
)
}
const styles = StyleSheet.create({
screen: {
width: '100%',
height: '100%',
paddingVertical: '15%',
backgroundColor: '#1e1e1e',
alignItems: 'center',
},
textinput: {
marginVertical: 10,
padding: 10,
width: '70%',
height: 40,
backgroundColor: '#ababab',
},
})
export default App
从 Expo SDK 34 升级到 Expo SDK 38 后,问题不再重现。
似乎这至少是 Expo SDK 版本 34 中的一个问题。
我正在使用 expo 开发一个 react-native 应用程序。
在我的登录屏幕上,我有两个 TextInputs(带有 textContentType 用户名和密码)。
我确实有多个地方可以调用 Keyboard.dismiss()
(来自包装 Touchable,来自其他按钮等),这适用于大多数用例。
我的问题是,当我在 iOS 上成功使用密码自动填充(通过指纹)后,键盘首先会自动隐藏并重新显示(触发所有常见的键盘事件),这看起来很奇怪但可以接受,但之后键盘不再对任何 Keyboard.dismiss()
调用做出反应,直到我聚焦另一个 TextInput。
"use strong password" 键盘覆盖层似乎也存在类似问题。
这是我的版本:
"expo": "^34.0.1",
"react": "16.8.3",
"react-dom": "^16.8.6",
"react-native": "https://github.com/expo/react-native/archive/sdk-34.0.0.tar.gz",
运行 在 iOS 13.2.3
的 Expo 客户端中提前感谢您的帮助。
编辑:
我将问题简化为最基本的版本。关闭按钮工作正常,直到我在 iOS 设备上使用密码自动填充。
https://github.com/SebastianRoese/tryouts/tree/master/keyboard-dismiss-problem
import React from 'react'
import { View, Button, TextInput, StyleSheet, Keyboard } from 'react-native'
const App = () => {
return (
<View style={styles.screen}>
<TextInput style={styles.textinput} textContentType="username" />
<TextInput style={styles.textinput} secureTextEntry textContentType="password" />
<Button title="Dismiss Keyboard" onPress={() => Keyboard.dismiss()} />
</View>
)
}
const styles = StyleSheet.create({
screen: {
width: '100%',
height: '100%',
paddingVertical: '15%',
backgroundColor: '#1e1e1e',
alignItems: 'center',
},
textinput: {
marginVertical: 10,
padding: 10,
width: '70%',
height: 40,
backgroundColor: '#ababab',
},
})
export default App
从 Expo SDK 34 升级到 Expo SDK 38 后,问题不再重现。
似乎这至少是 Expo SDK 版本 34 中的一个问题。