解决scrollview滑动不流畅
RCTScrollView.m 里找到这个方法
- (void)handleCustomPan:(__unused UIPanGestureRecognizer *)sender
{
//改动地方在这里
if ([self _shouldDisableScrollInteraction] && ![NSStringFromClass([RCTUIManager JSResponder].class) isEqualToString:@"RCTScrollView"]) {
self.panGestureRecognizer.enabled = NO;
self.panGestureRecognizer.enabled = YES;
// TODO: If mid bounce, animate the scroll view to a non-bounced position
// while disabling (but only if
stopScrollInteractionIfJSHasResponderwas // called during apan). Currently, it will just snap into place which // is not so bad either. // Another approach: // self.scrollEnabled = NO; // self.scrollEnabled = YES; } }
不是这里的原因,改了没用。 是外部下拉的scrollView和FlatList的scrollView手势重叠了, 最终都是作用到RCTScrollView上, 我把MJScrollView.js里的onScrollShouldSetResponder: this.scrollResponderHandleScrollShouldSetResponder,(触摸开始时是否成为响应者) 这句话注释掉就可以了, 但是注释掉后带下拉的sectionList又滑不动了, 所以我现在还没找到一个好的解决方案。
onScrollShouldSetResponder: () => false, sectionList卡顿是因为我在外层使用了react-native-scrollable-tab-view,按照 #20 修改下就好了,不过滑动还是有一点点问题,就是如果里面的FlatList先上滑再下滑,不会触发下拉刷新,因为手势还是作用在FlatList上,要松一次再下拉,手势才会定在外层ScrollView上。
这样改有个问题,由于onScrollShouldSetResponder手势被拦截,在左右滑动的时候就会触发list的item点击事件,左右滑动会进入二级页面,对于使用了ScrollableTabView的页面是可怕的,所以这个方案无效
最近我也遇到这个问题~ 所以最后是怎么解决的呢?
提主的方式有效~值得一试。 仔细看了下我用的Flatlist 中的ScrollView 是我自定义的xxScrollView, 此时就会出现 IOS 滚动不顺滑的现象。
我是单层的Flatlist,使用楼主的方法得到了解决
is userful