React Native 中的 onStartShouldSetPanResponder 与 onMoveShouldSetPanResponder
onStartShouldSetPanResponder vs onMoveShouldSetPanResponder in React Native
我正在使用 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
导致它 're-become' 在拖动手势的每个后续增量上响应?
2) onPanResponderGrant()
是仅在我第一次单击 Animated.View
时被调用,还是在每次拖动手势的后续增量时也被调用?
3) 在onPanResponderMove
中,dx
和dy
是从触摸开始的总累积距离,还是对应于触摸的单个增量的小增量当前拖动手势? IE。如果我在 x
方向上将 Animated.View
总共拖了 100px
,dx
会被 100px
还是像 1px
为拖动手势的当前增量?
如果你能给我一些关于其中任何一个的见解,那就太好了。
谢谢!
不会,它只会成为响应者一次。通常你只需要其中之一。例如,如果您只想在拖动时激活手势,您可以 return no from onStartShouldSetPanResponder.
onPanResponderGrant() 对于给定的手势只会被调用一次。这通常是您可以更新状态或 UI 以通知用户手势处于活动状态的地方。
dx
和 dy
确实是相对于手势开始的累积 x 和 y 位置。因此,在您的示例中,它将是 100。
我正在使用 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
导致它 're-become' 在拖动手势的每个后续增量上响应?
2) onPanResponderGrant()
是仅在我第一次单击 Animated.View
时被调用,还是在每次拖动手势的后续增量时也被调用?
3) 在onPanResponderMove
中,dx
和dy
是从触摸开始的总累积距离,还是对应于触摸的单个增量的小增量当前拖动手势? IE。如果我在 x
方向上将 Animated.View
总共拖了 100px
,dx
会被 100px
还是像 1px
为拖动手势的当前增量?
如果你能给我一些关于其中任何一个的见解,那就太好了。
谢谢!
不会,它只会成为响应者一次。通常你只需要其中之一。例如,如果您只想在拖动时激活手势,您可以 return no from onStartShouldSetPanResponder.
onPanResponderGrant() 对于给定的手势只会被调用一次。这通常是您可以更新状态或 UI 以通知用户手势处于活动状态的地方。
dx
和dy
确实是相对于手势开始的累积 x 和 y 位置。因此,在您的示例中,它将是 100。