一行代碼教你解決Scrollview和TextInput焦點(diǎn)獲取問(wèn)題
前言
業(yè)務(wù)開發(fā)中搜索框和列表的組合頁(yè)面應(yīng)該是比較常見的場(chǎng)景,那么有什么坑呢?
最近在開發(fā)過(guò)程就遇到了一個(gè)問(wèn)題,輸入搜索關(guān)鍵詞查詢接口返回?cái)?shù)據(jù)后,點(diǎn)擊列表項(xiàng)并返回上個(gè)頁(yè)面時(shí),發(fā)現(xiàn)需要兩次點(diǎn)擊,納尼?頁(yè)面示意圖如下

通過(guò)日志以及邏輯分析發(fā)現(xiàn)兩個(gè)問(wèn)題:
- 1.第一次點(diǎn)擊列表項(xiàng)無(wú)法觸發(fā)onPress點(diǎn)擊事件
- 2.第一次點(diǎn)擊其實(shí)是使輸入框失去焦點(diǎn)并隱藏鍵盤
知道問(wèn)題在哪就有解決問(wèn)題的方向了:點(diǎn)擊列表項(xiàng)使輸入框自動(dòng)失去焦點(diǎn),并觸發(fā)onPress點(diǎn)擊事件。
嘗試方案
- 1.通過(guò)點(diǎn)擊事件添加Keyboard.dismiss(),并使用輸入框ref調(diào)用blur()方法
- 2.通過(guò)使用Scrollview包裹整個(gè)頁(yè)面,添加keyboardShouldPersistTaps={'handled'}設(shè)置項(xiàng)(網(wǎng)上方案)
方案結(jié)果:
- 沒有作用
- 沒有效果,且上面的搜索框會(huì)一起滾動(dòng)
最終方案
通過(guò)在技術(shù)群溝通,有位群友提出方案
scrollview 容器加 keyboardDismissMode="on-drag" 實(shí)踐后,并未解決此問(wèn)題
最終通過(guò)嘗試在列表Flatlist中添加屬性keyboardShouldPersistTaps={'always'}成功解決
示例代碼如下:
// 自定義輸入框
<CustomizeSearchBar
value={searchText}
actionPress={onActionPress}
placeholder='請(qǐng)輸入昵稱/地址/姓名/手機(jī)號(hào)查詢' onSearchChange={onSearchChange}/>
<FlatList
keyboardShouldPersistTaps={'always'}
style={{flex: 1}}
data={addressList}
renderItem={renderItem}
ListEmptyComponent={<ListEmpty type={2} />}
keyExtractor={(item) => item.id}
/>
復(fù)制代碼附RN中文網(wǎng)對(duì)keyboardShouldPersistTaps的解釋說(shuō)明:

最后
寫了Android和Flutter混合開發(fā)一年多,又開始寫RN了,就想一個(gè)圓一樣。
小伙伴們,你們現(xiàn)在是做RN,Flutter,原生,還是轉(zhuǎn)行了?
以上就是一行代碼教你解決Scrollview和TextInput焦點(diǎn)獲取問(wèn)題的詳細(xì)內(nèi)容,更多關(guān)于Scrollview TextInput焦點(diǎn)獲取的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android 自定義View實(shí)現(xiàn)芝麻分曲線圖效果
這篇文章主要介紹了Android 自定義View實(shí)現(xiàn)芝麻分曲線圖效果的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-11-11
詳解Android WebView的input上傳照片的兼容問(wèn)題
本篇文章主要介紹了詳解Android WebView的input上傳照片的兼容問(wèn)題,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-08-08
Android實(shí)現(xiàn)計(jì)算器(計(jì)算表達(dá)式/計(jì)算小數(shù)點(diǎn)以及括號(hào))
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)計(jì)算器功能,計(jì)算表達(dá)式,能計(jì)算小數(shù)點(diǎn)以及括號(hào),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
Android中Intent傳遞對(duì)象的3種方式詳解
這篇文章給大家介紹了Android中Intent傳遞對(duì)象的3種方式,分別是Serializable 方式、Parcelable 方式以及JSON 方式,有需要的朋友們可以一起參考借鑒,下面來(lái)一起看看吧。2016-09-09
Android一個(gè)類實(shí)現(xiàn)錄音與播放實(shí)例
大家好,本篇文章主要講的是Android一個(gè)類實(shí)現(xiàn)錄音與播放實(shí)例,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02

