我需要一些可以同时按下的按钮,但是目前如果你按下一个按钮,它“声称”响应性而其他按钮不能再被按下了.我该怎么做呢?
得到它了.您必须使用ReactNativeEventEmitter直接监听触摸事件并完全绕过手势响应程序.下面是一个装饰器类,只要收到这些触摸事件,它就会在包装类中调用onTouchStart,onTouchEnd和onTouchMove.
'use strict'; import React,{Component} from 'react-native'; import ReactNativeEventEmitter from 'ReactNativeEventEmitter'; import NodeHandle from 'NodeHandle'; export const multitouchable = BaseComponent => { return class extends Component { constructor(props,context) { super(props,context); this.comp = null; this.compId = null; } componentDidMount() { if(this.comp && this.compId){ this.comp.onTouchStart && ReactNativeEventEmitter.putListener(this.compId,'onTouchStart',e => this.comp.onTouchStart(e)); this.comp.onTouchEnd && ReactNativeEventEmitter.putListener(this.compId,'onTouchEnd',e => this.comp.onTouchEnd(e)); this.comp.onTouchMove && ReactNativeEventEmitter.putListener(this.compId,'onTouchMove',e => this.comp.onTouchMove(e)); } } componentWillUnmount() { if(this.comp && this.compId){ this.comp.onTouchStart && ReactNativeEventEmitter.deleteListener(this.compId,'onTouchStart'); this.comp.onTouchEnd && ReactNativeEventEmitter.deleteListener(this.compId,'onTouchEnd'); this.comp.onTouchMove && ReactNativeEventEmitter.deleteListener(this.compId,'onTouchMove'); } } render() { return ( <BaseComponent {...this.props} {...this.state} ref={c => { this.comp = c; const handle = React.findNodeHandle(c); if(handle) this.compId = NodeHandle.getRootNodeID(handle); }} /> ); } }; }