我正在尝试将我所有的组件“场景”都包装在expo multitouch component中(这是平移响应器的包装),这样,如果有人在任何时候执行多点触摸手势,这都会触发应用程序菜单,否则,子视图会响应触摸事件。我该如何完成?似乎父级会捕获并停止所有事件的传播-我本以为那些事件将从最内层的元素向上冒泡。
通常,我会使用摇动手势,但是我使用的是expo,它会将该手势保留给自己的菜单。
这是我的代码:
class ResultsScreen extends React.Component {
render() {
const props = {
onTouchBegan: ({ identifier }) => {
console.log('onTouchBegan', identifier);
},
};
return (
<MultiTouchView
style={{ flex: 1 }}
{...props}
>
{ /* scrolling not working */ }
<ScrollView
style={{
flex: 1,
}}
>
</ScrollView>
</MultiTouchView>
)
}
请注意,如果我设置的话,它仍然使用React Native的方法:
onStartShouldSetPanResponderCapture: ()=>false,
onMoveShouldSetPanResponderCapture: ()=>false,
onStartShouldSetPanResponder: ()=>false,
onMoveShouldSetPanResponder: ()=>false,
在该props
对象中,然后底层元素将按预期响应-我不再获得onTouchBegan事件。