下面是创建panResponder
的一个实例片段:React Native:如何暂时禁用PanResponder?
constructor(props) {
super(props);
this.position = new Animated.ValueXY();
this.panResponder = PanResponder.create({
onStartShouldSetPanResponder: () => true,
onPanResponderMove: (event, gesture) => {
this.position.setValue({ x: 0, y: gesture.dy });
},
onPanResponderRelease: (event, gesture) => {
if (gesture.dy > SWIPE_THRESHOLD) {
this.forceSwipe('up');
} else if (gesture.dy < -SWIPE_THRESHOLD) {
this.forceSwipe('down');
} else {
this.resetPosition();
}
},
onMoveShouldSetPanResponderCapture: (evt, gestureState) =>
gestureState.dx !== 0 && gestureState.dy !== 0,
});
}
getCardStyle() {
return {
...this.position.getLayout(),
};
}
下面是我的组件的代码片段:
<Animated.View
key={ item.id }
style={ [ this.getCardStyle(), styles.cardStyle ] }
{ ...this.panResponder.panHandlers }
>
<Card
shouldPanRespond={ this.shouldPanRespond }
item={ item }
/>
</Animated.View>
代码片段卡组件:
<TouchableOpacity
activeOpacity={ 1 }
style={ cardStyle }
onPress={ this.onPress }
>
<ScrollView contentContainerStyle={ cardStyle }>
<Image
resizeMode="cover"
style={ imageStyle }
source={ { uri: img_url } }
/>
<View style={ titleWrapStyle }>
<Text style={ textStyle }>{ title }</Text>
</View>
</ScrollView>
</TouchableOpacity>
我正在制作完全定位在另一个之后的牌。然后可以使用panResponder
将这些卡片向上或向下滑动。但是,在点击屏幕时,我应该在同一屏幕上显示详细信息页面。
现在,我可以检测到水龙头,但每当用户点击/点击时,我想要禁用panResponder
,以便无法刷卡,用户可以滚动浏览内容。一旦用户滚动到最后,我想重新启用滑动即我想启用平移。
我知道onStartShouldSetResponder:() => false
禁用panResponder
但我们如何在创建实例后禁用它。我在其他地方找不到太多。
我试过了。我将this.handlePanResponderStart分配给您在答案中错过的onStartShouldSetResponder。没有工作。 –