react-native-pull
react-native-pull copied to clipboard
PullView&&PullList解决下拉顶部偶尔出现空白
这个问题主要是出现在iOS上,因为iOS的scrollview是有弹性的Android没有, 个人的解决办法是在判断是否拦截上拉事件时返回false,不拦截。这样上拉还是交给scrollview自己处理,希望可以解决问题,如果不能希望对帮助你解决问题提供一个思路。 代码:
onShouldSetPanResponder(e, gesture) {
//向上滑动不拦截 防止上方出现白色部分
if (!this.pullable || isUpGesture(gesture.dx, gesture.dy)|| !isVerticalGesture(gesture.dx, gesture.dy)) { //不使用pullable,或非向上 或向下手势不响应
return false;
}
if (!this.state.scrollEnabled) {
this.lastY = this.state.pullPan.y._value;
return true;
} else {
return false;
}
}
如果发现不能向上滑动可以把scrollview或者listview里面的 scrollEnabled={this.state.scrollEnabled}这个代码去掉。 目前我用着至少比以前好了。
使用flatlist&&Scrollview 上拉下拉没有空白 修改的作者代码https://github.com/wuyunqiang/PullView
@wuyunqiang 使用了你这种方式之后再ios还是有问题,下拉狠了有留白啊,怎么解决啊?
不知道你是使用的我的代码 还是使用的作者的然后自己修改的 你是用的scrollview还是flatlist 我使用改过后的没有遇到你说的问题啊。如果实在不行 那就只能换个库或者尝试将iOS的弹性属性设置false看看行不行吧。
PanResponder不管上滑手势之后,体检就好多了 但是不太明白为什么作者要自己处理上滑的情况,然后在处理中,添加了下面的代码
// 上滑的同时控制滚动条位置
this.scroll.scrollTo({x:0, y: gesture.dy * -1});
这个时候,上滑就感觉到卡顿。
@104gogo 怎么不管上滑手势? 我也想优化这一点
@zengyimou 太久以前写的了,感觉应该是下面这段代码,使用 isVerticalGesture 方法进行了判断
onShouldSetPanResponder(e, gesture) {
if (!this.pullable || isUpGesture(gesture.dx, gesture.dy) || !isVerticalGesture(gesture.dx, gesture.dy)) { //不使用pullable,或非向上 或向下手势不响应
return false;
}
...
}