javascript - RNAlert 导致“keyboardWillHide”被调用两次
问题描述
我使用 react-native-keyboard-aware-scroll-view来处理键盘外观。
"react-native": "0.62.2",
"react-native-keyboard-aware-scroll-view": "^0.9.1",
这是代码示例:
<View style={{flex: 1}}>
<KeyboardAwareScrollView
alwaysBounceVertical={false}
showsVerticalScrollIndicator={false}
style={{flex: 1}}
keyboardShouldPersistTaps="handled"
extraHeight={100}
>
<View style={{height: 1000}} />
<TouchableOpacity onPress={() => Alert.alert('Hello', 'world!')}>
<View>
<Text>Press me</Text>
</View>
</TouchableOpacity>
<TextInput placeholder={'Give me text'} />
</KeyboardAwareScrollView>
</View>
并遇到奇怪的行为。重现步骤:
- 向下滚动视图
- 焦点文本输入:
- 出现键盘
- 视图在输入下滚动
- 按 TouchableOpacity:
- 键盘消失
- 视图向上滚动到顶部,TextInput 离开屏幕
- 出现警报
- 按确定:
- 警报消失
- 出现键盘
- 视图在输入下滚动
预期行为:
- 向下滚动视图
- 焦点文本输入:
- 出现键盘
- 视图在输入下滚动
- 按 TouchableOpacity:
- 键盘消失
- 视图向上滚动,但 TextInput 仍然不可见
- 出现警报
- 按确定:
- 警报消失
- 出现键盘
- 视图在输入下滚动
深入研究KASV的代码表明,“keyboardWillHide”在调用 Alert.alert 时触发了两次。这会导致defaultResetScrollToCoords在第一个“keyboardWillHide”之后为空,第二个“keyboardWillHide”导致 scrollToPosition(0, 0, true)。
我试图在不使用任何 KASV 的情况下捕获“keyboardWillHide”。'keyboardWillHide' 也被触发了两次。
看起来这是警报的错误,因为打开 RNModal 只会触发一次“keyboardWillHide”。
有什么想法可以解决这个问题吗?
解决方案
推荐阅读
- python - 如何从 django 中的登录用户向官方帐户发送电子邮件?
- android - 关闭“DataWedge”、“Wedge as Keys”等。在 Android Studio 中以编程方式用于扫描仪 SDK Honeywell、Datalogic、Zebra
- certificate - 具有 1024 位密钥的证书执行 SHA2 签名
- asp.net-mvc - 自动将用户重定向到登录页面,而不是在 ASP.NET MVC 页面上崩溃
- python - 如何在不超过 API 配额的情况下将大量行附加到 Google 表格
- python - 如何用字符串中的另一个正则表达式替换一个正则表达式
- python-3.x - 从另一个目录动态导入文件
- swift - 将函数分配给其他类变量
- javascript - 使用隐藏的表单字段来存储 JSON,然后解析它。JSON 解析失败
- r - 基于两个分组变量的变量总和 - 上一年