长按PanResponder

时间:2019-01-07 09:58:59

标签: javascript react-native

我有一个平面列表,它的项目可以被用户平移拖动。并且我使用react-native PanResponder在平面列表项上创建了这样的功能。

项目:

  constructor(props) {
    super(props);

    const position = new Animated.ValueXY();

    const panResponder = PanResponder.create({
        onStartShouldSetPanResponder: () => {
            return false

        },
        onPanResponderMove: (event, gesture) => {
            //  console.log(gesture);
            position.setValue({ x: gesture.dx });

        }, onPanResponderRelease: (event, gesture) => {

            if (gesture.moveX < 20) {
                this.props.changeData(this.props.data.id)
            }
            else {
                position.setValue({ x: 0, y: 0 });
                return false
            }
        }, onMoveShouldSetPanResponder: () => {
            alert('ZZZ')
        },
        onMoveShouldSetPanResponderCapture:()=>{
           console.log('XXXX')
        }


    });
    this.state = { panResponder, position, show: false };
}



render() {
    let handles = this.state.panResponder.panHandlers;


    return (
        <View style={{ alignItems: 'center' }}>
            <Animated.View
                style={[styles.ball, this.state.position.getLayout(), { backgroundColor: this.props.data.color }]}
                {...(this.state.panResponder.panHandlers && handles)}

            >

                <Text>
                    {this.props.data.color}
                </Text>

            </Animated.View>
        </View>

    );

}

但是现在有一个问题..我想在用户长按某个项目时启用平移响应器。但我不知道如何处理长按并在PanResponder中的事件上启用Panresponder手势。

如您在上方看到的,onStartShouldSetPanResponder: () => false我是从PanResponder开始false(意味着禁用)的,我想在用户长时间操作后获得true(启用)按下项目,反之亦然(发布时)。

0 个答案:

没有答案