尝试使用React Native PanResponder创建swiper。当我再次点击按钮后,释放按钮开始在开始的位置。我尝试在onPanResponderGrant中使用setOffset,但这会使按钮在滚动时超出父容器。如果sser滚动了45%的容器半宽度,我将动画按钮移动到该半宽度的末端。
下面是我的代码https://snack.expo.io/@sargnec/react-native-swiper的链接
尝试使用React Native PanResponder创建swiper。当我再次点击按钮后,释放按钮开始在开始的位置。我尝试在onPanResponderGrant中使用setOffset,但这会使按钮在滚动时超出父容器。如果sser滚动了45%的容器半宽度,我将动画按钮移动到该半宽度的末端。
下面是我的代码https://snack.expo.io/@sargnec/react-native-swiper的链接
2条答案
按热度按时间btxsgosb1#
我想我做了一些改变,使它工作:
1.我一直
onPanResponderGrant:()=> {
this.pan.setOffset({x:});
},handlePanResponderMove这很重要,这样当用户第二次点击你的按钮并使gestureState.dx = 10时,你确实读到了10 px,而不是dx,因为初始位置(第一次点击后)
1.在handlePanResponderMove上,我评论了“// this.setState({ xPosition:gestureState.dx })”你的“xPosition”对于知道你的点开始的位置很有用,所以xPosition + dx是否超过限制。在panResponderMove上更新的话,如果做很多非常小的dx步骤,就会在结束前到达DRAG_TOP_LIMIT
1.(可选)实际上,你的xPosition并没有用于渲染(也没有用),所以你应该把它从状态中移除,只做这个._xPosition
这里是代码
字符串
vsmadaxz2#
今天碰到这个问题就这样解决了
字符串