React Native PanResponder无法在Android设备

时间:2016-09-07 08:42:47

标签: javascript android react-native device

出于某种原因,我无法在我的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>
    )
}

由于

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,就我而言,解决问题的方法是使用平移响应器处理程序为视图设置backgroundColor。如果您无法使其色彩鲜艳(如我所不能),只需将backgroundColor设置为不引人注意的内容,例如rgba(255,255,255,0.01)

似乎android在透明视图上忽略了pan响应器处理程序

答案 1 :(得分:0)

似乎onResponder ...回调仅在授予当前视图作为响应者后才起作用,即您应从以下回调之一返回true(取决于手势类型和事件阶段):onStartShouldSetResponder,onStartShouldSetResponderCapture,onMoveShouldSetResponder,onMoveShouldSetResponderCapture。我认为这是一种非常正确的行为。