美文网首页
React Native Android中touch事件传递

React Native Android中touch事件传递

作者: xinguoshui | 来源:发表于2018-08-10 10:06 被阅读0次

在Android中

ReactRootView.onTouchEvent()
JSTouchDispatcher.handleTouchEvent()
EventDispatcher.dispatchEvent()
mCurrentFrameCallback.maybePostFromNonUI()
DispatchEventsRunnable.run()
event.dispatch(mRCTEventEmitter)
mRCTEventEmitter = mReactContext.getJSModule(RCTEventEmitter.class);

这个是一个JS module。
在RN中

react-native/Libraries/Renderer/oss/ReactNativeRenderer-prod.js
RCTEventEmitter.register(ReactNativeEventEmitter);

其中react-native/Libraries/EventEmitter /RCTEventEmitter.js会进行如下操作:

const RCTEventEmitter = {
  register(eventEmitter: any) {
    BatchedBridge.registerCallableModule(
      'RCTEventEmitter',
      eventEmitter
    );
  }
};

所以最终事件处理逻辑是在ReactNativeRenderer-prod.js这个文件中的receiveTouches函数。

receiveTouches
_receiveRootNodeIDEvent
handleTopLevel
extractEvents

这里有一篇文章讲到了RN iOS中touch事件的传递。
react native事件及手势响应系统

相关文章

网友评论

      本文标题:React Native Android中touch事件传递

      本文链接:https://www.haomeiwen.com/subject/odqkbftx.html