我正在使用React Native中的PanResponder,并正在考虑单击Animated.View
并将其拖动的情况。我有以下代码:
this.panResponder = PanResponder.create({
onStartShouldSetPanResponder: () => true,
onMoveShouldSetPanResponder: () => true,
onPanResponderGrant: () => {
this.animatedValue.setOffset({
x: this._value.x,
y: this._value.y,
})
this.animatedValue.setValue({ x: 0, y: 0})
},
onPanResponderMove: Animated.event([
null,
{
dx: this.animatedValue.x,
dy: this.animatedValue.y
}
])
})
我的问题是:
1)如果单击PanResponder附加到的
Animated.View
,我知道onStartShouldSetPanResponder: () => true
导致Animated.View
成为此手势的响应者,但是onMoveShouldSetPanResponder: () => true
导致它“重新成为”响应者在拖动手势的每个后续增量上?2)是仅当我第一次单击
onPanResponderGrant()
时才调用Animated.View
,还是在以后每次拖动手势时都调用它?3)在
onPanResponderMove
中,dx
和dy
是从触摸开始算起的总累积距离,还是与当前拖动手势的各个增量相对应的较小增量?即。如果我在Animated.View
方向上总共拖动了100px
个x
,对于当前拖动手势增量,是dx
一个100px
还是一个类似于1px
的东西?如果您能给我一些关于这些方面的见解,那将是很棒的。
谢谢!
最佳答案
不,它只会成为响应者一次。通常,您只需要其中之一。例如,如果仅希望手势在拖动时变为活动状态,则将从onStartShouldSetPanResponder中返回否。
对于给定的手势,onPanResponderGrant()将仅被调用一次。通常,您可以在这里更新状态或UI,以通知用户手势处于活动状态。dx
和dy
实际上是相对于手势开始的x和y累积位置。因此在您的示例中为100。
关于javascript - React Native中的onStartShouldSetPanResponder与onMoveShouldSetPanResponder,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55211567/