出于某种原因,我无法在我的Android设备上制作PanResponder。我在Android 5.0.2中使用摩托罗拉Moto E(第二代)
我能够在Android模拟器(Nexus 6:Android 5.1和Nexus S:Android 4.4)以及iOS模拟器和设备上完成这项工作。
知道为什么PanResponder
无法在设备上运行?
这里有一些代码,以防万一它需要。 console.log
无法在设备上运行:
componentWillMount() {
this.panResponder = this.getPanResponder();
}
getPanResponder() {
return PanResponder.create({
onStartShouldSetPanResponder: () => {
console.log('start');
return true;
},
onStartShouldSetPanResponderCapture: () => {
console.log('start capture');
return true;
},
onMoveShouldSetPanResponder: () => {
console.log('move');
return true;
},
onMoveShouldSetPanResponderCapture: () => {
console.log('move capture');
return true;
},
onPanResponderMove: () => {
console.log('moving');
}
})
}
render() {
return (
<View
style={styles.container}
{...this.panResponder.panHandlers}
>
</View>
)
}
由于
答案 0 :(得分:1)
我遇到了同样的问题,就我而言,解决问题的方法是使用平移响应器处理程序为视图设置backgroundColor。如果您无法使其色彩鲜艳(如我所不能),只需将backgroundColor设置为不引人注意的内容,例如rgba(255,255,255,0.01)
似乎android在透明视图上忽略了pan响应器处理程序
答案 1 :(得分:0)
似乎onResponder ...回调仅在授予当前视图作为响应者后才起作用,即您应从以下回调之一返回true(取决于手势类型和事件阶段):onStartShouldSetResponder,onStartShouldSetResponderCapture,onMoveShouldSetResponder,onMoveShouldSetResponderCapture。我认为这是一种非常正确的行为。