当前位置: 首页 > Web前端 > HTML

RNTouchableOpacity点击事件没有详细响应

时间:2023-03-28 02:07:29 HTML

问题是整个页面布局如上:在实际开发中,发现下图红框中所有区域的点击事件都没有效果,不会触发问题。定位到RN的基本触摸组件。试试TouchableHighlight、TouchableNativeFeedback、TouchableOpacity、TouchableWithoutFeedbackonPressIn:点击开始;onPressOut:点击结束或离开;onPress:点击事件的回调;onLongPress:长按事件回调。以上触摸事件不管怎么试,在红框区域都是无效事件。PressablePressable是一个核心组件的封装,可以检测任意子组件在不同阶段的按压交互。这次点击也是无效操作。当时官方文档中有一句话提示:触摸区域不会超过绑定的父视图。当按下重叠兄弟视图时,具有较高z-index的视图将被优先考虑。启发尝试:定位布局&解决方案首先在真机打开Android调试工具的布局边框如下图。前端的布局效果首先是顶部有背景的banner区域,然后是签到卡片。从布局上可以明显看出banner和签到卡有重叠区域。从代码定位开始,一步步查看const。样式=StyleSheet.create({banner:{height:170,width:width,paddingTop:25,paddingLeft:15,backgroundColor:Colors.F4F5F7,},})当前可用点数{taskInfo?.totalPoints}{jumpToNewTask();}}>新手任务{jumpToRedeem();}}}>积分兑换{/*七日签到区*/}{getTaskInfo();getSignListInit();}}/>从代码中可以看出,签到卡片是包裹在banner的ImageBackground里面的,banner的高度只有170px,按照官方的说法,toucharea不会超过父容器区域,但实际可点击区域只是banner高度170以内的可触摸区域。那么问题已经很清楚了,需要修改页面的整体布局。Conststyles=StyleSheet.create({banner:{height:170,width:width,paddingTop:25,paddingLeft:15,backgroundColor:Colors.F4F5F7,},signListContent:{borderRadius:8,backgroundColor:Colors.FFFFFF,宽度:宽度-30,marginTop:25,paddingVertical:20,position:'absolute',top:80,left:15,}})当前可用点数......{/*七日签到区*/}{getTaskInfo();getSignListInit();}}/>签到卡片直接取出来与banner同级,然后使用绝对定位将卡片叠加在banner区域,使其父容器为最外层的body文档流,这样卡里面的都是可触摸区域,完美解决了问题