1. 触摸事件和手势

1.1. JS

  • Event.target 点击的组件 reactTag
  • Event.currentTarget 响应的组件 reactTag
var { getInstanceFromNode, getFiberCurrentPropsFromNode } = require('ReactNativeComponentTree');
// 获取按钮 node
var currentTargetNode = getInstanceFromNode(e.currentTarget);
// 获取按钮 props
var currentTargetProps = getFiberCurrentPropsFromNode(currentTargetNode.stateNode);

1.2. Android

1.2.1. TouchEvent

public static TouchEvent obtain(
      int viewTag,
      TouchEventType touchEventType,
      MotionEvent motionEventToCopy,
      long gestureStartTime,
      float viewX,
      float viewY,
      TouchEventCoalescingKeyHelper touchEventCoalescingKeyHelper)
  • viewTag 视图 ID
  • touchEventType 触屏事件类型
  • motionEventToCopy 系统的 MotionEvent
  • gestureStartTime 手势开始时间
  • viewX 当前X坐标
  • viewY 当前Y坐标

dispatchEvent 发送 TouchEvent

接收 TouchEvent

BackHandler.addEventListener('hardwareBackPress', this._handleBackAction);

1.2.2. PanResponder

1.3. iOS

1.3.1. RCTView

hitTest:withEvent

1.3.2. 关于sendInputEventWithName事件名自定义

  • RCTDirectEventBlock:直接事件,这种事件类型作为不影响UI的一些事件,比如“图片加载失败”。
  • RCTBubblingEventBlock:冒泡事件,就和操作DOM一样,影响UI的事件,比如“点击按钮事件”。

1.4. References

results matching ""

    No results matching ""