网络知识 娱乐 React-native自定义view手势滑动 无响应拦截问题

React-native自定义view手势滑动 无响应拦截问题

//这个视图是否在触摸开始时想成为响应器? 
onStartShouldSetPanResponder:this._onStartShouldSetPanResponder,
//所以如果一个父视图要防止子视图在触摸开始时成为响应器,它应该有一个 onStartShouldSetResponderCapture 处理程序,返回 true。
onStartShouldSetPanResponderCapture:this._onStartShouldSetPanResponderCapture,
//当视图不是响应器时,该指令被在视图上移动的触摸调用:这个视图想“声明”触摸响应吗? 
onMoveShouldSetPanResponder:this._onMoveShouldSetPanResponder,
//所以如果一个父视图要防止子视图在移动开始时成为响应器,它应该有一个 onMoveShouldSetPanResponderCapture 处理程序,返回 true。
onMoveShouldSetPanResponderCapture:this._onMoveShouldSetPanResponderCapture,
//当前有其他的东西成为响应器并且没有释放它。 
onPanResponderReject: this._onPanResponderReject,
//视图现在正在响应触摸事件。这个时候要高亮标明并显示给用户正在发生的事情。
onPanResponderGrant: this._onPanResponderGrant,
//手势开始
onPanResponderStart: this._onPanResponderStart,
//手势结束
onPanResponderEnd: this._onPanResponderEnd,
//用户正移动他们的手指 
onPanResponderMove: this._onPanResponderMove,
//在触摸最后被引发,即“touchUp” 
onPanResponderRelease: this._onPanResponderRelease,
//其他的东西想成为响应器。这种视图应该释放应答吗?返回 true 就是允许释放 
onPanResponderTerminationRequest:this._onPanResponderTerminationRequest,
//响应器已经从该视图抽离了。可能在调用onResponderTerminationRequest 之后被其他视图获取,也可能是被操作系统在没有请求的情况下获取了(发生在 iOS 的 control center/notification center)。 
onPanResponderTerminate: this._onPanResponderTerminate,
// Returns whether this component should block native components from becoming the JS
// responder. Returns true by default. Is currently only supported on android.
onShouldBlockNativeResponder:this._onShouldBlockNativeResponder,

其他的不介绍了,官网用法都有,这里有一个问题在网上搜索了不少资料也没解决

onPanResponderEnd: this._onPanResponderEnd, // 结束 包括release的方法

onPanResponderTerminate: this._onPanResponderTerminate, // 判断当前 手势 如果被拦截了就执行这里 不会再进去release判断

如果没有响应的情况下,吧 下面这个拦截的方法加上然后再在里面执行同样的代码就能解决了

_onPanResponderEnd(e, gestureState) {
//your code
    const {onAfterChange} = this.props;

    if (onAfterChange) {
        onAfterChange(this.state.process);
        // onAfterChange(gestureState.x0 - 120);
    }
}

_onPanResponderTerminate(e, gestureState) {
//your code
    const {onAfterChange} = this.props;

    if (onAfterChange) {
        onAfterChange(this.state.process);
        // onAfterChange(gestureState.x0 - 120);
    }
}
返回顶部