import React from 'react';
import {Animated, Text, View, StyleSheet, SafeAreaView} from 'react-native';
const App = () => {
const gestureHandlers = {
/**
* 在手指触摸开始时申请成为响应者
*/
onStartShouldSetResponder: evt => {
console.log('onStartShouldSetResponder');
return true;
},
/**
* 在手指在屏幕移动时申请成为响应者
*/
onMoveShouldSetResponder: evt => {
console.log('onMoveShouldSetResponder');
return true;
},
/**
* 申请成功,组件成为了事件处理响应者,这时组件就开始接收后序的触摸事件输入。
* 一般情况下,这时开始,组件进入了激活状态,并进行一些事件处理或者手势识别的初始化
*/
onResponderGrant: evt => {
console.log('onResponderGrant');
},
/**
* 表示申请失败了,这意味者其他组件正在进行事件处理,
* 并且它不想放弃事件处理,所以你的申请被拒绝了,后续输入事件不会传递给本组件进行处理。
*/
onResponderReject: evt => {
console.log('onResponderReject');
},
/**
* 表示手指按下时,成功申请为事件响应者的回调
*/
onResponderStart: evt => {
console.log('onResponderStart');
},
/**
* 表示触摸手指移动的事件,这个回调可能非常频繁,所以这个回调函数的内容需要尽量简单
*/
onResponderMove: evt => {
console.log('onResponderMove');
},
/**
* 表示触摸完成(touchUp)的时候的回调,表示用户完成了本次的触摸交互,这里应该完成手势识别的处理,
* 这以后,组件不再是事件响应者,组件取消激活
*/
onResponderRelease: evt => {
console.log('onResponderRelease');
},
/**
* 组件结束事件响应的回调
*/
onResponderEnd: evt => {
console.log('onResponderEnd');
},
/**
* 当其他组件申请成为响应者时,询问你是否可以释放响应者角色让给其他组件
*/
onResponderTerminationRequest: evt => {
console.log('onResponderTerminationRequest');
return true;
},
/**
* 如果 onResponderTerminationRequest 回调函数返回为 true,
* 则表示同意释放响应者角色,同时会回调如下函数,通知组件事件响应处理被终止
* 这可能是由于其他View通过onResponderTerminationRequest请求的,也可能是由操作系统强制夺权(比如iOS上的控制中心或是通知中心)。
*/
onResponderTerminate: evt => {
console.log('onResponderTerminate');
},
};
return (
<SafeAreaView style={styles.container}>
<View
{...gestureHandlers}
style={{
backgroundColor: 'red',
height: 200,
}}>
<Text style={{color: '#fff'}}>view</Text>
</View>
</SafeAreaView>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
},
});
export default App;
https://www.jianshu.com/p/256b14b290e5