react-native 手势响应以及触摸事件的处理
2024-09-30 19:17:22
react-native 的触摸事件:
TouchableHighlight , TouchableNativeFeedBack , TouchableOpacity , TouchableWithoutFeedBack。
在onPress事件触发的函数中都会携带事件参数(event)包含一个参数 :nativeEvent 参数如下
locationX 和 locationY 是触摸的位置相对于组件的位置
pageX 和 pageY 是触摸的位置相对于屏幕的位置
timestamp 是时间戳
手势操作 PanResponder
用法参见React-native实例:
componentWillMount: function() {
this._panResponder = PanResponder.create({
// 要求成为响应者:
onStartShouldSetPanResponder: (evt, gestureState) => true,
onStartShouldSetPanResponderCapture: (evt, gestureState) => true,
onMoveShouldSetPanResponder: (evt, gestureState) => true,
onMoveShouldSetPanResponderCapture: (evt, gestureState) => true, onPanResponderGrant: (evt, gestureState) => {
// 开始手势操作。给用户一些视觉反馈,让他们知道发生了什么事情! // gestureState.{x,y} 现在会被设置为0
},
onPanResponderMove: (evt, gestureState) => {
// 最近一次的移动距离为gestureState.move{X,Y} // 从成为响应者开始时的累计手势移动距离为gestureState.d{x,y}
},
onPanResponderTerminationRequest: (evt, gestureState) => true,
onPanResponderRelease: (evt, gestureState) => {
// 用户放开了所有的触摸点,且此时视图已经成为了响应者。
// 一般来说这意味着一个手势操作已经成功完成。
},
onPanResponderTerminate: (evt, gestureState) => {
// 另一个组件已经成为了新的响应者,所以当前手势将被取消。
},
onShouldBlockNativeResponder: (evt, gestureState) => {
// 返回一个布尔值,决定当前组件是否应该阻止原生组件成为JS响应者
// 默认返回true。目前暂时只支持android。
return true;
},
});
}, render: function() {
return (
<View {...this._panResponder.panHandlers} />
);
},
如果想要详细的了解触摸或者点击事件的机制或者详细的参数信息 参阅:RN官网https://reactnative.cn/docs/gesture-responder-system/ , https://reactnative.cn/docs/panresponder/ 以及这篇文章 :https://www.race604.com/react-native-touch-event/
最新文章
- PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转
- Mysql修改字段长度
- linux find命令
- 单机搭建Android开发环境(一)
- POJ 2452 Sticks Problem
- VirtualBox4.3.12 Centos6.5-i386 设置共享文件夹
- Request Tracker 4.0.13 发布
- [计算机图形学] OpenGL读取obj文件并显示其3D效果
- [原]unity5 AssetBundle打包
- 关于Block Formatting Context--BFC和IE的hasLayout
- IIS Handler and Module探索
- Linux企业级开发技术(4)——epoll企业级开发之epoll例程
- grunt之dev-pro环境切换
- java数据导出成 EXCEL
- network-manager与interfaces冲突
- 30款javascript脚本插件 jquery插件大全
- 使用最新的log4cplus(1.1.1)隔离不同的 log 文件输出
- 使用Clean() 去掉由函数自动生成的字符串中的双引号
- JS列表的下拉菜单组件(仿美化控件select)
- 邪恶改装2:用单片机实现一次简单的wifi密码欺骗