我有一个平面列表,它的项目可以被用户平移拖动。并且我使用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
(启用)按下项目,反之亦然(发布时)。