RN的Modal组件内使用LongPressGestureHandler等手势能力在安卓下不生效

255 阅读1分钟

问题

RN开发,想在播放视频时长按触发保存弹窗,在Modal组件中使用LongPressGestureHandler包裹全部内容,在IOS下功能正常,但是在安卓下无法触发LongPressGestureHandler的事件

解决办法

LongPressGestureHandler外包裹一层GestureHandlerRootView,代码示例如下

import {
  Modal
} from 'react-native'
import {
  LongPressGestureHandler,
  GestureHandlerRootView,
} from 'react-native-gesture-handler'

<Modal transparent> 
   <GestureHandlerRootView style={{flex:1}}> 
      <LongPressGestureHandler>
          {/* Your components */}
      </LongPressGestureHandler>
   </GestureHandlerRootView>
</Modal>

由于安卓和iOS在触摸事件处理机制上存在差异,GestureHandlerRootView 作为中间层,屏蔽了这些差异,为开发者提供了统一的跨平台手势处理接口。使用它可以在不同平台上保持一致的手势识别行为,无需关心底层平台细节。

参考:github.com/software-ma…