react-native-MJRefresh icon indicating copy to clipboard operation
react-native-MJRefresh copied to clipboard

解决scrollview滑动不流畅

Open jinjiantong opened this issue 6 years ago • 7 comments

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 stopScrollInteractionIfJSHasResponder was // called during a pan). Currently, it will just snap into place which // is not so bad either. // Another approach: // self.scrollEnabled = NO; // self.scrollEnabled = YES; } }

jinjiantong avatar Jul 03 '19 07:07 jinjiantong

不是这里的原因,改了没用。 是外部下拉的scrollView和FlatList的scrollView手势重叠了, 最终都是作用到RCTScrollView上, 我把MJScrollView.js里的onScrollShouldSetResponder: this.scrollResponderHandleScrollShouldSetResponder,(触摸开始时是否成为响应者) 这句话注释掉就可以了, 但是注释掉后带下拉的sectionList又滑不动了, 所以我现在还没找到一个好的解决方案。

geniu-vs avatar Jul 04 '19 10:07 geniu-vs

onScrollShouldSetResponder: () => false, sectionList卡顿是因为我在外层使用了react-native-scrollable-tab-view,按照 #20 修改下就好了,不过滑动还是有一点点问题,就是如果里面的FlatList先上滑再下滑,不会触发下拉刷新,因为手势还是作用在FlatList上,要松一次再下拉,手势才会定在外层ScrollView上。

geniu-vs avatar Jul 08 '19 01:07 geniu-vs

这样改有个问题,由于onScrollShouldSetResponder手势被拦截,在左右滑动的时候就会触发list的item点击事件,左右滑动会进入二级页面,对于使用了ScrollableTabView的页面是可怕的,所以这个方案无效

geniu-vs avatar Jul 12 '19 07:07 geniu-vs

最近我也遇到这个问题~ 所以最后是怎么解决的呢?

woshi82 avatar Aug 06 '19 03:08 woshi82

提主的方式有效~值得一试。 仔细看了下我用的Flatlist 中的ScrollView 是我自定义的xxScrollView, 此时就会出现 IOS 滚动不顺滑的现象。

woshi82 avatar Aug 06 '19 06:08 woshi82

我是单层的Flatlist,使用楼主的方法得到了解决

BleachCC avatar Oct 18 '19 04:10 BleachCC

is userful

MackJac avatar Nov 19 '19 01:11 MackJac