1. import React from 'react';
    2. import {Animated, Text, View, StyleSheet, SafeAreaView} from 'react-native';
    3. const App = () => {
    4. const gestureHandlers = {
    5. /**
    6. * 在手指触摸开始时申请成为响应者
    7. */
    8. onStartShouldSetResponder: evt => {
    9. console.log('onStartShouldSetResponder');
    10. return true;
    11. },
    12. /**
    13. * 在手指在屏幕移动时申请成为响应者
    14. */
    15. onMoveShouldSetResponder: evt => {
    16. console.log('onMoveShouldSetResponder');
    17. return true;
    18. },
    19. /**
    20. * 申请成功,组件成为了事件处理响应者,这时组件就开始接收后序的触摸事件输入。
    21. * 一般情况下,这时开始,组件进入了激活状态,并进行一些事件处理或者手势识别的初始化
    22. */
    23. onResponderGrant: evt => {
    24. console.log('onResponderGrant');
    25. },
    26. /**
    27. * 表示申请失败了,这意味者其他组件正在进行事件处理,
    28. * 并且它不想放弃事件处理,所以你的申请被拒绝了,后续输入事件不会传递给本组件进行处理。
    29. */
    30. onResponderReject: evt => {
    31. console.log('onResponderReject');
    32. },
    33. /**
    34. * 表示手指按下时,成功申请为事件响应者的回调
    35. */
    36. onResponderStart: evt => {
    37. console.log('onResponderStart');
    38. },
    39. /**
    40. * 表示触摸手指移动的事件,这个回调可能非常频繁,所以这个回调函数的内容需要尽量简单
    41. */
    42. onResponderMove: evt => {
    43. console.log('onResponderMove');
    44. },
    45. /**
    46. * 表示触摸完成(touchUp)的时候的回调,表示用户完成了本次的触摸交互,这里应该完成手势识别的处理,
    47. * 这以后,组件不再是事件响应者,组件取消激活
    48. */
    49. onResponderRelease: evt => {
    50. console.log('onResponderRelease');
    51. },
    52. /**
    53. * 组件结束事件响应的回调
    54. */
    55. onResponderEnd: evt => {
    56. console.log('onResponderEnd');
    57. },
    58. /**
    59. * 当其他组件申请成为响应者时,询问你是否可以释放响应者角色让给其他组件
    60. */
    61. onResponderTerminationRequest: evt => {
    62. console.log('onResponderTerminationRequest');
    63. return true;
    64. },
    65. /**
    66. * 如果 onResponderTerminationRequest 回调函数返回为 true,
    67. * 则表示同意释放响应者角色,同时会回调如下函数,通知组件事件响应处理被终止
    68. * 这可能是由于其他View通过onResponderTerminationRequest请求的,也可能是由操作系统强制夺权(比如iOS上的控制中心或是通知中心)。
    69. */
    70. onResponderTerminate: evt => {
    71. console.log('onResponderTerminate');
    72. },
    73. };
    74. return (
    75. <SafeAreaView style={styles.container}>
    76. <View
    77. {...gestureHandlers}
    78. style={{
    79. backgroundColor: 'red',
    80. height: 200,
    81. }}>
    82. <Text style={{color: '#fff'}}>view</Text>
    83. </View>
    84. </SafeAreaView>
    85. );
    86. };
    87. const styles = StyleSheet.create({
    88. container: {
    89. flex: 1,
    90. },
    91. });
    92. export default App;

    https://www.jianshu.com/p/256b14b290e5