首页 > 解决方案 > react-native PanResponder:OnMoveShouldSetPanResponder 不工作

问题描述

我正在使用 React-Native PanResponder 做一个小项目。

我的目标:我试图捕捉用户是否正在触摸屏幕,而不是四处移动。

我的问题:我无法在内部运行任何代码 onMoveShouldSetPanResponder(evt, gestureState) 以在用户仅触摸时阻止 PanResponder。

我尝试console.log了参数gestureState或随机字符串,但没有响应。

我的代码:

    componentWillMount(){

        this._panResponder = PanResponder.create({

        onStartShouldSetPanResponderCapture: () => true,

        onStartShouldSetPanResponder: (evt, gestureState) => true,

        onMoveShouldSetPanResponderCapture: (evt, gestureState) => true,

        onMoveShouldSetPanResponder: (evt, gestureState) => {
            // no console.log shown in this scope.
            console.log(gestureState);
            console.log("a string inside should set on move")
            // the PanResponder still works despite this returns false
            return false;
        },

        onPanResponderMove : (evt, gState) => {
            // this works perfectly. 
            this.setState({addAngle: this.state.addAngle + gState.vy*40});
        },

    })

}

我的问题是:我在这里遗漏了什么吗?我看到了其他人的代码片段,他们似乎工作得很好。

我在哪里看到了示例代码:https ://gist.github.com/teameh/dd055d546a3bd8f85b9516840e3a45f3

技术:

注意:我还没有在任何 Iphone 设备上进行测试。

干杯!

标签: react-native

解决方案


我通过删除 onStartShouldSetPanResponder 解决了这个问题。我无法指出任何文档来支持这一点,但我相信 onStartShouldSetPanResponder 和 onMoveShouldSetPanResponder 是互斥的。


推荐阅读