KeyboardAvoidingView 在 iOS 中在屏幕加载之间表现不一致,在下方添加空白

2024-02-19

我的应用程序的主屏幕相对简单 - 标题、主要是文本输入的主体和页脚。它的设置如下(我正在简化代码以仅调用主要结构项):

SafeAreaProvider
SafeAreaView  // flex: 1
   KeyboardAvoidingView  // behavior="height", flex: 1, children also have flex: 1
      Header  // fixed height, no flexGrow
      Swipeable  // This lets the user swipe the input left or right; set to flexGrow: 1 and children have style flexGrow: 1
         View
            TextInput  // multiline
      Footer  // fixed height, no flexGrow

错误在于,这种元素组合并没有像我预期的那样工作。首先,当屏幕首次加载时,它看起来像这样,页脚和键盘之间有一个空白:

移动到不同的屏幕然后返回会导致键盘显示,但页脚被一直推到屏幕底部,即进入 SafeArea 应该阻止它移动并被键盘隐藏的部分:

为什么屏幕加载时会显示白色间隙,以及为什么当键盘关闭时页脚会进入安全区域?

附录:令人沮丧的是,在 Expo Go 上本地运行应用程序时,此错误不会重现 - 页脚与键盘顶部齐平。

附录 2:这个 bug 的一个令人费解的地方是它似乎并不一致。例如,我最初的帖子中关于转到另一个屏幕然后返回导致页脚距离安全区域排除部分太远的观察结果并不一致。现在,当我加载应用程序时(我没有更改任何内容),转到另一个屏幕并返回会导致页脚位于安全区域排除区域上方,正如我所期望的那样。

我想知道这种不一致是否表明前端不同部分之间存在某种竞争条件?


你可以在 KeyboardAvoidingView 中添加这个道具吗

keyboardVerticalOffset={-80}

根据您的要求进行调整

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KeyboardAvoidingView 在 iOS 中在屏幕加载之间表现不一致,在下方添加空白 的相关文章

随机推荐