我想在PanResponder
系统仍然移动时停止它。即如果满足条件,则取消或结束手势。
我有一个Animated.Value
连接到手势并且该值上有一个监听器。如果它大于100,我想暂停平移手势。
答案 0 :(得分:0)
您需要在onMoveShouldSetPanResponder
中返回false以停止PanResponder
。请考虑以下示例:
this._panResponder = PanResponder.create({
{...}
onMoveShouldSetPanResponder: (e, gestureState) => {
if (stopPanResponder) {
return false;
}
return true;
},
{...}
onPanResponderTerminationRequest: () => true
});
答案 1 :(得分:0)
您可以通过在父视图上启用PanReponder
来停止PanResponder
系统。
在documentation中,我们有:
onStartShouldSetResponder和onMoveShouldSetResponder用 冒泡模式,其中最深的节点首先被调用。那意味着 当多个视图时,最深的组件将成为响应者 为* ShouldSetResponder处理程序返回true。这是可取的 大多数情况下,因为这样可以确保所有控件和按钮都可用。
但是,有时父母会希望确保它成为 响应者。这可以通过使用捕获阶段来处理。之前 响应器系统从最深层的组件冒出来,它将做一个 捕获阶段,在* ShouldSetResponderCapture上触发。所以如果父母 View希望防止孩子在触摸时成为响应者 开始时,应该有一个onStartShouldSetResponderCapture处理程序 返回true。
在这种情况下,应在满足条件时为父视图设置onMoveShouldSetPanResponderCapture。
onMoveShouldSetPanResponderCapture: () => this.isMyConditionTrue(),
并且,还对子响应者设置以下属性:
onPanResponderTerminationRequest: () => true,
以允许父母捕获响应者。