一行代码教你解决Scrollview和TextInput焦点获取问题
作者:wayne214 时间:2022-03-25 21:34:58
前言
业务开发中搜索框和列表的组合页面应该是比较常见的场景,那么有什么坑呢?
最近在开发过程就遇到了一个问题,输入搜索关键词查询接口返回数据后,点击列表项并返回上个页面时,发现需要两次点击,纳尼?页面示意图如下
通过日志以及逻辑分析发现两个问题:
1.第一次点击列表项无法触发onPress点击事件
2.第一次点击其实是使输入框失去焦点并隐藏键盘
知道问题在哪就有解决问题的方向了:点击列表项使输入框自动失去焦点,并触发onPress点击事件。
尝试方案
1.通过点击事件添加Keyboard.dismiss(),并使用输入框ref调用blur()方法
2.通过使用Scrollview包裹整个页面,添加keyboardShouldPersistTaps={'handled'}设置项(网上方案)
方案结果:
没有作用
没有效果,且上面的搜索框会一起滚动
最终方案
通过在技术群沟通,有位群友提出方案
scrollview 容器加 keyboardDismissMode="on-drag" 实践后,并未解决此问题
最终通过尝试在列表Flatlist中添加属性keyboardShouldPersistTaps={'always'}
成功解决
示例代码如下:
// 自定义输入框
<CustomizeSearchBar
value={searchText}
actionPress={onActionPress}
placeholder='请输入昵称/地址/姓名/手机号查询' onSearchChange={onSearchChange}/>
<FlatList
keyboardShouldPersistTaps={'always'}
style={{flex: 1}}
data={addressList}
renderItem={renderItem}
ListEmptyComponent={<ListEmpty type={2} />}
keyExtractor={(item) => item.id}
/>
复制代码
附RN中文网对keyboardShouldPersistTaps
的解释说明:
最后
写了Android和Flutter混合开发一年多,又开始写RN了,就想一个圆一样。
小伙伴们,你们现在是做RN,Flutter,原生,还是转行了?
来源:https://juejin.cn/post/7166987535216803848
标签:Scrollview,TextInput,焦点获取
0
投稿
猜你喜欢
Spring EL表示式的运用@Value说明
2023-03-05 02:33:19
java异常处理详细介绍及实例
2023-11-28 05:07:02
java struts2学习笔记之线程安全
2022-08-07 00:13:07
C++ 中二分查找递归非递归实现并分析
2023-06-19 06:51:31
LINQ操作符SelectMany的用法
2021-08-22 18:20:37
Spring Boot项目如何同时支持HTTP和HTTPS协议的实现
2023-11-19 19:57:05
Android Handle原理(Looper,Handler和Message)三者关系案例详解
2023-08-25 22:51:47
Spring Boot支持Crontab任务改造的方法
2023-08-08 20:20:24
springcloud使用feign调用服务时参数内容过大问题
2022-08-31 11:23:26
IDEA基于支付宝小程序搭建springboot项目的详细步骤
2021-10-30 22:44:46
Springboot打包部署代码实例
2022-08-15 14:41:46
分别用ToolBar和自定义导航栏实现沉浸式状态栏
2023-03-17 21:08:14
Android 实现单线程轮循机制批量下载图片
2022-11-05 11:03:45
Flutter 实现整个App变为灰色的方法示例
2023-02-21 13:20:39
C#的回调机制浅析
2022-04-06 19:10:32
Android中URLEncoder空格被转码为"+"号的处理办法
2022-02-09 17:58:12
C# 最基础知识介绍--多态
2022-07-10 14:34:36
Android集成zxing扫码框架功能
2021-09-27 02:37:17
Android Studio 中aidl的自定义类的使用详解
2022-04-18 17:35:43
Android如何设置圆角图片
2021-12-06 23:35:31