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