gpt4 book ai didi

javascript - React Native 中的 onStartShouldSetPanResponder 与 onMoveShouldSetPanResponder

转载 作者:行者123 更新时间:2023-11-30 14:06:50 29 4
gpt4 key购买 nike

我正在使用 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) 如果我点击 Animated.View PanResponder 附加到,我知道 onStartShouldSetPanResponder: () => true导致Animated.View成为这个手势的响应者,但是onMoveShouldSetPanResponder: () => true使其在拖动手势的每个后续增量中“重新成为”响应者?

2) onPanResponderGrant()只有当我第一次点击 Animated.View 时才会被调用,还是它也会在拖动手势的每个后续增量中被调用?

3) 在onPanResponderMove , 是 dxdy从触摸开始的总累积距离,还是与当前拖动手势的单个增量相对应的小增量? IE。如果我拖了 Animated.View100pxx方向,会dx通过 100px还是类似于 1px对于拖动手势的当前增量?

如果您能给我一些关于其中任何一个的见解,那就太好了。

谢谢!

最佳答案

  1. 不会,它只会成为响应者一次。通常你只需要其中之一。例如,如果您只希望手势在拖动时变为事件状态,您将从 onStartShouldSetPanResponder 返回 no。

  2. onPanResponderGrant() 只会针对给定的手势调用一次。这通常是您可以更新状态或 UI 以通知用户手势处于事件状态的地方。

  3. dxdy 确实是相对于手势开始的累积 x 和 y 位置。因此,在您的示例中,它将是 100。

关于javascript - React Native 中的 onStartShouldSetPanResponder 与 onMoveShouldSetPanResponder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55211567/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com