Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GKScrollView滑动上拉加载等问题 #32

Open
wlyy460 opened this issue Aug 7, 2023 · 54 comments
Open

GKScrollView滑动上拉加载等问题 #32

wlyy460 opened this issue Aug 7, 2023 · 54 comments

Comments

@wlyy460
Copy link

wlyy460 commented Aug 7, 2023

你好,
发现以下问题:
1、源码库最新版本中上拉加载刷新数据后,默认每次回到第1个视频,前面播放顺序都已丢失。
2、上滑播放一定数量视频后,会有前面的cell数据缓存与当前cell存在短时间重合问题,即前面cell闪屏下后消失,可能是cell复用有问题,基于两点能否优化

@QuintGao
Copy link
Owner

QuintGao commented Aug 9, 2023

最新版已修复,GKVideoScrollView需更新到 1.0.7

@wlyy460
Copy link
Author

wlyy460 commented Aug 10, 2023

你好,
已收到修复,另外存在以下新问题:
1、下拉刷新快速上下滑动一直不松开时,页面中cell显示异常,会出现上下cell各占半屏;
2、会出现在首次进入页面加载数据后并快速滑动时会出现底部cell显示空白问题,滑动到其他cell回来后恢复显示,此问题每次出现,应该也是cell复用问题,后续可否优化

@QuintGao
Copy link
Owner

@wlyy460 1、下拉刷新快速上下滑动一直不松开时,页面中cell显示异常,会出现上下cell各占半屏;
这个没有复现,可否发个视频看下

@wlyy460
Copy link
Author

wlyy460 commented Aug 15, 2023

@wlyy460 1、下拉刷新快速上下滑动一直不松开时,页面中cell显示异常,会出现上下cell各占半屏; 这个没有复现,可否发个视频看下
@QuintGao

RPReplay_Final1692079302.mp4

视频附件如上链接,本质是出现下拉刷新回弹显示问题,另外cell出现空白数据的问题在快速来回滑动时也会出现,不止于首次加载数据的场景。

@QuintGao
Copy link
Owner

你好, 已收到修复,另外存在以下新问题: 1、下拉刷新快速上下滑动一直不松开时,页面中cell显示异常,会出现上下cell各占半屏; 2、会出现在首次进入页面加载数据后并快速滑动时会出现底部cell显示空白问题,滑动到其他cell回来后恢复显示,此问题每次出现,应该也是cell复用问题,后续可否优化

@wlyy460 最新代码已修复,看看还有问题吗

@wlyy460
Copy link
Author

wlyy460 commented Aug 15, 2023

好的,最新库快速滑动目前还存在第3个cell出现空白数据问题,即上面提到的第二个问题,另还发现一概率问题:播放完成调用scrollToNextPage自动滑动到下一视频,还存在滑动回弹问题,cell位置显示异常存在偏移,即下个cell未完全滑动屏幕中间展示,任意滑动后恢复,需要多次尝试

@QuintGao
Copy link
Owner

好的,最新库快速滑动目前还存在第3个cell出现空白数据问题,即上面提到的第二个问题,另还发现一概率问题:播放完成调用scrollToNextPage自动滑动到下一视频,还存在滑动回弹问题,cell位置显示异常存在偏移,即下个cell未完全滑动屏幕中间展示,任意滑动后恢复,需要多次尝试

最新版已修复 1.0.8

@wscqs
Copy link

wscqs commented Aug 16, 2023

我想问下,为啥不直接用uitableview或者uicollectionview?( GKScrollView封装的目的)

@wlyy460
Copy link
Author

wlyy460 commented Aug 16, 2023

我想问下,为啥不直接用uitableview或者uicollectionview?( GKScrollView封装的目的)

我也想问下,这不好处理当前显示的cell吧,怎么监听cell可见开始播放等及自动滑动等效果,如果你有好的方案请@我

@wlyy460
Copy link
Author

wlyy460 commented Aug 17, 2023

好的,最新库快速滑动目前还存在第3个cell出现空白数据问题,即上面提到的第二个问题,另还发现一概率问题:播放完成调用scrollToNextPage自动滑动到下一视频,还存在滑动回弹问题,cell位置显示异常存在偏移,即下个cell未完全滑动屏幕中间展示,任意滑动后恢复,需要多次尝试

最新版已修复 1.0.8

@QuintGao 已收到,目前验证还会出现2个问题:1、不过出现快速上/下滑动时切换当前cell视频未起播问题,目前根据日志打印确认是didEndScrollingCell没收到回调引起,导致未调用播放逻辑,稍微上下滑动调整则恢复正常,此问题概率较高。2、快速上拉加载时,刷新数据后会出现当前cell回退到前一个的问题。
另外加载全部无更多数据后,快速滑动到最后一个cell时未正常播放,与问题1一致,此前未出现过。

@QuintGao
Copy link
Owner

@QuintGao 已收到,目前验证还会出现2个问题:1、不过出现快速上/下滑动时切换当前cell视频未起播问题,目前根据日志打印确认是didEndScrollingCell没收到回调引起,导致未调用播放逻辑,稍微上下滑动调整则恢复正常,此问题概率较高。2、快速上拉加载时,刷新数据后会出现当前cell回退到前一个的问题。 另外加载全部无更多数据后,快速滑动到最后一个cell时未正常播放,与问题1一致,此前未出现过。

再试试最新代码,第二个我这没复现

@wlyy460
Copy link
Author

wlyy460 commented Aug 17, 2023

@QuintGao 已收到,目前验证还会出现2个问题:1、不过出现快速上/下滑动时切换当前cell视频未起播问题,目前根据日志打印确认是didEndScrollingCell没收到回调引起,导致未调用播放逻辑,稍微上下滑动调整则恢复正常,此问题概率较高。2、快速上拉加载时,刷新数据后会出现当前cell回退到前一个的问题。 另外加载全部无更多数据后,快速滑动到最后一个cell时未正常播放,与问题1一致,此前未出现过。

再试试最新代码,第二个我这没复现
第二个问题是有概率性的,前提是在上拉快加载更多时,滑动得特别快,然后在加速减速上下多滑动几次会出现,刷新完成后是会回弹到当前cell前一个,此前版本1.0.7未出现此问题。
总结几点:
1、在快速上下滑动时,还会偶现滑动的cell数据空白,
2、cell数据偶有显示错乱,当前未正常归位
3、在第1个cell相关的附近滑动时不松开,这样来回快速滑动,也会出现未播放视频问题,滑动到第一个cell时避免刷新,这样能提高出现几率
这几个均和之前现象一致,都为概率性,目前还不太稳定。

@QuintGao
Copy link
Owner

第二个问题是有概率性的,前提是在上拉快加载更多时,滑动得特别快,然后在加速减速上下多滑动几次会出现,刷新完成后是会回弹到当前cell前一个,此前版本1.0.7未出现此问题。
总结几点:
1、在快速上下滑动时,还会偶现滑动的cell数据空白,
2、cell数据偶有显示错乱,当前未正常归位
3、在第1个cell相关的附近滑动时不松开,这样来回快速滑动,也会出现未播放视频问题,滑动到第一个cell时避免刷新,这样能提高出现几率
这几个均和之前现象一致,都为概率性,目前还不太稳定。

再试试最新版 1,2 我这试了很多次都没出现

@wlyy460
Copy link
Author

wlyy460 commented Aug 18, 2023

此前版本1.0.7未出现此问题
空白数据和显示错乱偶现的问题,可以在断网联网下不断切换场景下尝试。
但上拉加载会回弹到当前cell的前一个容易出现,以上问题前提是特别快速滑动或者一进入页面就快速滑动,不是正常随意滑动。自从修复上拉加载刷新回弹到首个cell问题后,一直未出现此问题,判断是1.0.8版本改动过后造成,可能某处逻辑存在漏洞。

@wlyy460
Copy link
Author

wlyy460 commented Aug 18, 2023

另外新发现在VC的viewWillDisappear中设置不透明的导航栏,在push或者presen跳转到其他页面再返回,会造成GCVideoScrollView的layoutSubviews被调用从而导致页面cell显示错乱(在跳转前页面保持当前cell必须不是第一个cell),总体来说感觉layoutSubviews逻辑存在问题,可能还会引起其他未知问题。

@QuintGao
Copy link
Owner

此前版本1.0.7未出现此问题
空白数据和显示错乱偶现的问题,可以在断网联网下不断切换场景下尝试。
但上拉加载会回弹到当前cell的前一个容易出现,以上问题前提是特别快速滑动或者一进入页面就快速滑动,不是正常随意滑动。自从修复上拉加载刷新回弹到首个cell问题后,一直未出现此问题,判断是1.0.8版本改动过后造成,可能某处逻辑存在漏洞。

这些问题都很难复现,如果你能复现并解决可以提 PR 哈

@wlyy460
Copy link
Author

wlyy460 commented Aug 23, 2023

此前版本1.0.7未出现此问题
空白数据和显示错乱偶现的问题,可以在断网联网下不断切换场景下尝试。
但上拉加载会回弹到当前cell的前一个容易出现,以上问题前提是特别快速滑动或者一进入页面就快速滑动,不是正常随意滑动。自从修复上拉加载刷新回弹到首个cell问题后,一直未出现此问题,判断是1.0.8版本改动过后造成,可能某处逻辑存在漏洞。

这些问题都很难复现,如果你能复现并解决可以提 PR 哈

现在没有时间深入学习你的代码,因为有些也不太懂,等有时间再请教下。有些问题还是很好复现的,这些是需要来回快速滑动,手指按着不放,都是会出现的概率很大,今天无意间打开示例出现了未加载视频播放回调问题,如图:

特别是实际使用时页面消失时设置不透明导航栏,会触发layoutSubviews逻辑是否可以进一步优化:#32 (comment)
IMG_0081

@QuintGao
Copy link
Owner

另外新发现在VC的viewWillDisappear中设置不透明的导航栏,在push或者presen跳转到其他页面再返回,会造成GCVideoScrollView的layoutSubviews被调用从而导致页面cell显示错乱(在跳转前页面保持当前cell必须不是第一个cell),总体来说感觉layoutSubviews逻辑存在问题,可能还会引起其他未知问题。

你只在 viewWillDisappear 设置不透明,viewWillAppear 里面不恢复透明吗?

@wlyy460
Copy link
Author

wlyy460 commented Aug 24, 2023

另外新发现在VC的viewWillDisappear中设置不透明的导航栏,在push或者presen跳转到其他页面再返回,会造成GCVideoScrollView的layoutSubviews被调用从而导致页面cell显示错乱(在跳转前页面保持当前cell必须不是第一个cell),总体来说感觉layoutSubviews逻辑存在问题,可能还会引起其他未知问题。

你只在 viewWillDisappear 设置不透明,viewWillAppear 里面不恢复透明吗?

是设置了恢复,一一对应的,你可以试下,取消viewWillDisappear中设置不透明度,就不会回调ayoutSubviews。我们不透明度是这样设置的:
if (@available(iOS 15.0, *)) {
//navigation标题文字颜色
NSDictionary *dic = @{NSForegroundColorAttributeName : UIColorBaseRGB(0x333333), NSFontAttributeName : PingFangSC_Medium_size(18)};
UINavigationBarAppearance *barApp = [UINavigationBarAppearance new];
barApp.backgroundColor =[UIColor whiteColor];
barApp.shadowColor = [UIColor whiteColor];
barApp.titleTextAttributes = dic;
self.navigationController.navigationBar.scrollEdgeAppearance = barApp;
self.navigationController.navigationBar.standardAppearance = barApp;
self.navigationController.navigationBar.translucent = NO;
}else{
//背景色
UIImage *image = [TCTools imageWithColor:UIColorBaseRGBA(0xffffff, 1)];
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

            [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : UIColorBaseRGB(0x333333), NSFontAttributeName : PingFangSC_Medium_size(18)}];
        }

设置全透明导航栏是这样设置:
if (@available(iOS 15.0, *)) {
//navigation标题文字颜色
NSDictionary *dic = @{NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName : PingFangSC_Medium_size(18)};
UINavigationBarAppearance *barApp = [UINavigationBarAppearance new];
barApp.backgroundColor =UIColorBaseRGBA(0xffffff, 0);
barApp.shadowColor = nil;
barApp.backgroundEffect = nil;
barApp.titleTextAttributes = dic;
self.navigationController.navigationBar.scrollEdgeAppearance = nil;
self.navigationController.navigationBar.standardAppearance = barApp;
self.navigationController.navigationBar.translucent = YES;
}else{
//背景色
UIImage *image = [TCTools imageWithColor:UIColorBaseRGBA(0xffffff, 0)];
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];

            // 导航条title 字体 颜色
            [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName :[UIColor whiteColor], NSFontAttributeName : PingFangSC_Medium_size(18)}];
        }

@wlyy460
Copy link
Author

wlyy460 commented Aug 24, 2023

还是,用了最新的sdk,快速滑动视频又不播放了,概率挺频繁的,最后是didEndDisplayingCell没有调用。willDisplayCell倒是先调用了,一上拉加载很多都是回调的问题和cell显示错乱,基本上上拉加载更多数据就容易
1C533368-DBAF-49A8-9276-5AB33938CFE2
出现这些问题,是否可以改成不复用cell,这样应该很少出现:
1、在快速上下滑动时,还会偶现滑动的cell数据空白,
2、cell数据偶有显示错乱,当前未正常归位
3、在第1个cell相关的附近滑动时不松开,这样来回快速滑动,也会出现未播放视频问题,滑动到第一个cell时避免刷新

用1.0.8,1.0.9版本,来回快速上下滑动不松开,尽量不离开当前cell,又出现了,一天至少十几次,位置偏移这个挺严重的。如图

@QuintGao
Copy link
Owner

试试最新代码看还有啥问题,快速滑动的问题我这很多都复现不了,另外 viewWillDisappear 里面设置不透明可以看 ZFPlayer 播放里面的示例,也是没问题的

@wlyy460
Copy link
Author

wlyy460 commented Aug 25, 2023

试试最新代码看还有啥问题,快速滑动的问题我这很多都复现不了,另外 viewWillDisappear 里面设置不透明可以看 ZFPlayer 播放里面的示例,也是没问题的

viewWillappear可能还设置状态栏样式UIStatusBarStyleLightContent,消失的时候还原UIStatusBarStyleDefault

**快速来回滑动还是存在问题,还是老问题回调不接收也不播放及cell显示错乱,修改后比之前概率更高,在1.0.8之前的概率很小。如下视频需要这样来回滑动,视频里只是示例演示操作复现的步骤,因为复现视频这里不能上传超过25M的.

RPReplay_Final1692939044.mp4

@QuintGao
Copy link
Owner

viewWillDisappear 那个问题跟状态栏没关系,我试过了,另外其他问题我还是都复现不了,没办法了。

@wlyy460
Copy link
Author

wlyy460 commented Aug 25, 2023

viewWillDisappear 那个问题跟状态栏没关系,我试过了,另外其他问题我还是都复现不了,没办法了。

我上传这个视频给你但有几十M, 我能否传到项目里?
需要像下面视频那样滑动,显示位置偏移无法播放,这样非常容易复现,几乎是100%,用Example最新示例。

RPReplay_Final1692939044.mp4

@QuintGao
Copy link
Owner

可以加我QQ:1094887059

@wlyy460
Copy link
Author

wlyy460 commented Aug 28, 2023

可以加我QQ:1094887059

已添加QQ看下,QQ不常用一般不在线,
另外发现
1、上拉加载更多数据时(非下拉加载更多),在数组头部插入数据,,但是当前显示的cell回弹到添加数据的第一个cell,这个问题需要改进。
2、GKVideoScrollView文件中存在声明了两个相同的当前索引currentIndex
@Property (nonatomic, assign) NSInteger currentIndex;
3、清空数据后刷新再滑动指定位置scrollToPageWithIndex,didEndScrollingCell会回调2次,index分别是第一个和滑动的位置,这样会存在有冲突同时播放等问题,是否可在刷新的时候不回调,在滑动时回调。
4、进入页面刷新数据再scrollToPageWithIndex指定位置(不手动滑动),再次清空刷新整个列表调用scrollToPageWithIndex指定位置后,即两次刷新的数据不相同,都是清空后scroll指定位置,所有回调函数未返回不起作用,排查发现自动滑动到的这两个index是相同的时候,均会出现上述问题。

@wlyy460
Copy link
Author

wlyy460 commented Aug 31, 2023

其中scrollToNextPage也存在问题,在不断清空数据刷新后重新定位,然后调用后无法自动滑动到下一页,主要是isChangeToNext = YES一直不满足直接返回了,isChangeToNext感觉没什么用,scrollToNextPage还是scrollToPageWithIndex都不会回调UIScrollView的相关代理函数。
所有手动滑动及scrollTo正常来说都应该回调didEndScrollingCell,didEndDisplayingCell,willDisplayCell,但是有的只能回调其中两个,有的不回调,也就会导致前述问题,能否优化

另外能否增加下局部刷新的接口

@QuintGao
Copy link
Owner

已添加QQ看下,QQ不常用一般不在线, 另外发现 1、上拉加载更多数据时(非下拉加载更多),在数组头部插入数据,,但是当前显示的cell回弹到添加数据的第一个cell,这个问题需要改进。 2、GKVideoScrollView文件中存在声明了两个相同的当前索引currentIndex @Property (nonatomic, assign) NSInteger currentIndex; 3、清空数据后刷新再滑动指定位置scrollToPageWithIndex,didEndScrollingCell会回调2次,index分别是第一个和滑动的位置,这样会存在有冲突同时播放等问题,是否可在刷新的时候不回调,在滑动时回调。 4、进入页面刷新数据再scrollToPageWithIndex指定位置(不手动滑动),再次清空刷新整个列表调用scrollToPageWithIndex指定位置后,即两次刷新的数据不相同,都是清空后scroll指定位置,所有回调函数未返回不起作用,排查发现自动滑动到的这两个index是相同的时候,均会出现上述问题。

1、上拉加载更多不是在数组中追加数据吗,插入到头部是什么操作
2 、.h 中的是只读的,暴露给外部使用的
3 4:可以通过设置 defaultIndex后再刷新

@wlyy460
Copy link
Author

wlyy460 commented Aug 31, 2023

已添加QQ看下,QQ不常用一般不在线, 另外发现 1、上拉加载更多数据时(非下拉加载更多),在数组头部插入数据,,但是当前显示的cell回弹到添加数据的第一个cell,这个问题需要改进。 2、GKVideoScrollView文件中存在声明了两个相同的当前索引currentIndex @Property (nonatomic, assign) NSInteger currentIndex; 3、清空数据后刷新再滑动指定位置scrollToPageWithIndex,didEndScrollingCell会回调2次,index分别是第一个和滑动的位置,这样会存在有冲突同时播放等问题,是否可在刷新的时候不回调,在滑动时回调。 4、进入页面刷新数据再scrollToPageWithIndex指定位置(不手动滑动),再次清空刷新整个列表调用scrollToPageWithIndex指定位置后,即两次刷新的数据不相同,都是清空后scroll指定位置,所有回调函数未返回不起作用,排查发现自动滑动到的这两个index是相同的时候,均会出现上述问题。

1、上拉加载更多不是在数组中追加数据吗,插入到头部是什么操作 2 、.h 中的是只读的,暴露给外部使用的 3 4:可以通过设置 defaultIndex后再刷新

你好,
第1个说明一下在数组中最开始的位置追加数据,不是在末尾,会出现回弹到刷新后的第1个位置,和之前在末尾添加数据回弹最后一个的问题有些相似。
3,4中想问下设置defaultIndex后再刷新,这个defaultIndex是设置为当前要滑动的位置吧?

还有一个问题就是滑动时,didEndScrollingCell在没有滑到下一个cell时,再松开后都会回调,也就是说会回调多次。容易导致多次播放等其他问题,添加相同url判断其实并不准确,有可能不是立即播放,而且滑动最后一个没有更多数据时,还存在回弹不彻底的问题等,根据不同的业务场景能否通用。
这个是否可以优化改善,真正只要用户滑动到位一次才回调一次呢?

@QuintGao
Copy link
Owner

QuintGao commented Sep 1, 2023

1 、还是没搞懂你的操作,下拉刷新不是清空列表重置数据吗,上拉加载不是在数组中追加数据吗
2 、设置 defaultIndex 刷新后,默认就会显示你设置的索引对应的数据
3 、 url 不准确的话还可以通过记录 index 判断,这个回调多次没啥问题,自己加个判断就行

@wlyy460
Copy link
Author

wlyy460 commented Sep 1, 2023

1 、还是没搞懂你的操作,下拉刷新不是清空列表重置数据吗,上拉加载不是在数组中追加数据吗 2 、设置 defaultIndex 刷新后,默认就会显示你设置的索引对应的数据 3 、 url 不准确的话还可以通过记录 index 判断,这个回调多次没啥问题,自己加个判断就行

(1)按照你说的设置设置 defaultIndex 刷新后并不会收到所有回调,就是前述说的两次reload刷新的位置相同的问题
(2)是在开始位置添加数据,不一定是末尾,就像分页加载一样,不一定下拉要清空数据,这个也很常见,根据不同场景可能不需要刷新清空,下拉也是分页加载,如果能通用就好了,不局限于数组尾部添加下拉加载更多;还有加载到最后一个加载完成的footer没有自动回弹隐藏起来,要手动上滑下才恢复,这是是什么原因呢?如视频

RPReplay_Final1693534120.mp4

(3)index也是不准的,如果当前位置是0,清空数据在刷新默认0还是有问的

@QuintGao
Copy link
Owner

QuintGao commented Sep 1, 2023

你说的这些都是些特殊场景,没办法内部处理,外面应该就可以处理,或者弄个 demo看看,footer 不能自动回弹是 MJRefresh 的问题

@wlyy460
Copy link
Author

wlyy460 commented Sep 1, 2023

你说的这些都是些特殊场景,没办法内部处理,外面应该就可以处理,或者弄个 demo看看,footer 不能自动回弹是 MJRefresh 的问题
针对在数组开始位置添加数据刷新,会回弹到第一个位置,这个有没有解决的办法办法,让它不回弹并保持原来显示的状态(比如刷新原来在播的继续播,原来是暂停的不变)。感觉这个之前数组后面添加数据刷新,也会回弹到最后一个是同样类型的问题,这个并不是特殊情况,我用scroll重新定位原来位置,但是原来的cell的状态都重置了没法处理,请问有没有好的方案呢?

@wlyy460
Copy link
Author

wlyy460 commented Sep 1, 2023

footer 不能自动回弹不是 MJRefresh问题,我试了下同样的刷新,为什么只有1条数据时加载更多没数据后能够自动回弹,不会出现此问题呢?另外请问这个有没有快捷最有效的解决方法吗,谢谢!

@wlyy460
Copy link
Author

wlyy460 commented Sep 1, 2023

总之只要一清除数据reload 在scrollPagenext还是pagewithindex定位,或者先定位,再reload出现各种问题,如果两个单独使用则不会,比如现在scroll定位,再请求接口reload,当前cell相邻的数据重复或混乱,cellForRowAtIndexPath回调的index完全错乱了[捂脸]

@QuintGao
Copy link
Owner

QuintGao commented Sep 5, 2023

总之只要一清除数据reload 在scrollPagenext还是pagewithindex定位,或者先定位,再reload出现各种问题,如果两个单独使用则不会,比如现在scroll定位,再请求接口reload,当前cell相邻的数据重复或混乱,cellForRowAtIndexPath回调的index完全错乱了[捂脸]

说下使用场景啊,最好提供下demo

@wlyy460
Copy link
Author

wlyy460 commented Sep 6, 2023

场景其实就是清除数据添加后,reload再调用scrollpageindex 到清除数据之前的位置index,比如现当前index是,全部清除列表重载数据后,在调用scrollpageindex就会跳转显示不符。用你这个的话,
/我需要的业务场景就是可能稍微复杂一些需要不断跳转

总之只要一清除数据reload 在scrollPagenext还是pagewithindex定位,或者先定位,再reload出现各种问题,如果两个单独使用则不会,比如现在scroll定位,再请求接口reload,当前cell相邻的数据重复或混乱,cellForRowAtIndexPath回调的index完全错乱了[捂脸]

说下使用场景啊,最好提供下demo

其实最大问题是,下拉加载更多时在数组的开头添加列表在刷新后(目前业务需要这种情况),会默认回弹到第1个位置,而不是之前显示的位置,这个外部调用方也不好解决。
如果能优化一下提供外部一个接口或判断,默认不回弹到第1个位置,保持原来的位置不变就好了。

其他问题倒是外部自己的业务可以试着处理一下,上面的很难处理。

@QuintGao
Copy link
Owner

QuintGao commented Sep 7, 2023

最新代码增加了相关方法及示例,ZFPlayer播放里面长按屏幕可触发

@wlyy460
Copy link
Author

wlyy460 commented Sep 8, 2023

你好,示例中
1、点击清空数据后会出现异常:*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'please set defaultIndex correctly',排查发现先点击顶部插入数据,再点清空后切换索引引起的,是示例isInsertFront为YES走的逻辑不一样导致
2、点击不感兴趣无动画,视频还在播放但出现黑屏的问题

@wlyy460
Copy link
Author

wlyy460 commented Sep 8, 2023

在最后一个cell出现后,请求加载更多时刷新后,还会出现当前播放的cell和下一个cell重复,和上次问题一致

@QuintGao
Copy link
Owner

你好,示例中 1、点击清空数据后会出现异常:*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'please set defaultIndex correctly',排查发现先点击顶部插入数据,再点清空后切换索引引起的,是示例isInsertFront为YES走的逻辑不一样导致 2、点击不感兴趣无动画,视频还在播放但出现黑屏的问题

最新代码已修复

@QuintGao
Copy link
Owner

在最后一个cell出现后,请求加载更多时刷新后,还会出现当前播放的cell和下一个cell重复,和上次问题一致

你是说加载更多后还播放的原来的内容吗?这个是正常的,需要再滑一次才播放下一个

@wlyy460
Copy link
Author

wlyy460 commented Sep 11, 2023

是加载更多下一页数据,不是滑动才请求加载更多数据,比如当前cell将要出现后,在这里调用接口加载更多业数据,相当于预加载下一页数据,会引起当前的cell和下一个cell的数据重复

@wlyy460
Copy link
Author

wlyy460 commented Sep 11, 2023

例如用ZFPlayer播放里面长按屏幕添加一项,触发加载更多请求下一页数据(数组末尾添加数据)

@wlyy460
Copy link
Author

wlyy460 commented Sep 15, 2023

在最后一个cell出现后,请求加载更多时刷新后,还会出现当前播放的cell和下一个cell重复,和上次问题一致

你是说加载更多后还播放的原来的内容吗?这个是正常的,需要再滑一次才播放下一个

是加载更多下一页数据,不是滑动才请求加载更多数据,比如当前cell将要出现后,在这里调用接口加载更多业数据,相当于预加载下一页数据,会引起当前的cell和下一个cell的数据重复

你好请问这个问题能优化吗,目前按照上面操作加载更多完成后(划到最后一条数据加载更多列表),在当前cell上滑1,2个视频,就分别出现其中一个视频有声音无画面 或者相邻两cell重复问题(必现,需要仔细看)

@QuintGao
Copy link
Owner

是加载更多下一页数据,不是滑动才请求加载更多数据,比如当前cell将要出现后,在这里调用接口加载更多业数据,相当于预加载下一页数据,会引起当前的cell和下一个cell的数据重复

这个我试了没出现问题啊,你可以试试最新demo,增加了加载下一页的功能

@wlyy460
Copy link
Author

wlyy460 commented Sep 15, 2023

是加载更多下一页数据,不是滑动才请求加载更多数据,比如当前cell将要出现后,在这里调用接口加载更多业数据,相当于预加载下一页数据,会引起当前的cell和下一个cell的数据重复

这个我试了没出现问题啊,你可以试试最新demo,增加了加载下一页的功能

你好,这真的会重复显示或视频没画面,用的上面的demo,录个视频你看看吧,你要滑到当前加载列表的最后一个cell视频,然后长按加载下一页数据,每次出现上面两种情况。

@wlyy460
Copy link
Author

wlyy460 commented Sep 15, 2023

其中第一个是cell无画面有声音的,第二个视频是先向上再向下滑动几下,出现重复的cell(大概在视频中间部分,重复标题tozkcoy),两个重复的cell视频播放是不同的,但是标题等数据都是一样,这些基本是回调影响的,第二个视频超过10M需要解压
第一个视频:
https://github.com/QuintGao/GKDYVideo/assets/12496638/6f18a301-831f-42eb-af19-87b7a2135f4e

第二个视频:

RPReplay_Final1694787505.mp4.zip

@QuintGao
Copy link
Owner

其中第一个是cell无画面有声音的,第二个视频是先向上再向下滑动几下,出现重复的cell(大概在视频中间部分,重复标题tozkcoy),两个重复的cell视频播放是不同的,但是标题等数据都是一样,这些基本是回调影响的,第二个视频超过10M需要解压 第一个视频: https://github.com/QuintGao/GKDYVideo/assets/12496638/6f18a301-831f-42eb-af19-87b7a2135f4e

第二个视频:

RPReplay_Final1694787505.mp4.zip

再试试最新代码

@wlyy460
Copy link
Author

wlyy460 commented Sep 18, 2023

其中第一个是cell无画面有声音的,第二个视频是先向上再向下滑动几下,出现重复的cell(大概在视频中间部分,重复标题tozkcoy),两个重复的cell视频播放是不同的,但是标题等数据都是一样,这些基本是回调影响的,第二个视频超过10M需要解压 第一个视频: https://github.com/QuintGao/GKDYVideo/assets/12496638/6f18a301-831f-42eb-af19-87b7a2135f4e
第二个视频:
RPReplay_Final1694787505.mp4.zip

再试试最新代码
目前暂未出现问题,如果预加载更多放到willDisplayCell中,可能会滑动会出现错乱问题,可能不适合放到此处

@wlyy460
Copy link
Author

wlyy460 commented Sep 20, 2023

其中第一个是cell无画面有声音的,第二个视频是先向上再向下滑动几下,出现重复的cell(大概在视频中间部分,重复标题tozkcoy),两个重复的cell视频播放是不同的,但是标题等数据都是一样,这些基本是回调影响的,第二个视频超过10M需要解压 第一个视频: https://github.com/QuintGao/GKDYVideo/assets/12496638/6f18a301-831f-42eb-af19-87b7a2135f4e
第二个视频:
RPReplay_Final1694787505.mp4.zip

再试试最新代码

使用新代码修改后还会引起以下几个问题,之前版本没有出现:
滑动上拉加载更多时,
快速滑动还会出现cell错乱,内容和视频不一致;
上拉加载完成后,从当前cell向上滑动显示的是第二页的第二个视频内容,而不是第一个,可以打印请求接口的数据验证(查看是第二页数据的第一个cellForRowAtIndexPath没收到回调引起),如下两视频所示:

RPReplay_Final1695177692.mp4
RPReplay_Final1695177816.mp4

@QuintGao
Copy link
Owner

再试试最新代码

@wlyy460
Copy link
Author

wlyy460 commented Sep 20, 2023

再试试最新代码

不过快速滑动时还是有很大概率出现cell展示,但视频不播放的问题,好像是之前老问题,这个不好录屏,应该是didEndScrollingCell滑动没收到,最后一个位置9即是此cell。基本都是调用reload刷新后快速滑动引起,参照这个视频的滑动速度行为复现:https://github.com/QuintGao/GKDYVideo/assets/12496638/f00dff43-e568-48a1-bd63-77ac27b921fd
2023-09-20 18:43:32.444210+0800 Example[58224:17573152] 即将出现---15
2023-09-20 18:43:32.678093+0800 Example[58224:17573152] 停止---16
2023-09-20 18:43:32.884460+0800 Example[58224:17573152] 即将出现---17
2023-09-20 18:43:33.243797+0800 Example[58224:17573152] 即将出现---15
2023-09-20 18:43:33.377616+0800 Example[58224:17573152] 播放----12
2023-09-20 18:43:33.927005+0800 Example[58224:17573152] 即将出现---11
2023-09-20 18:43:33.949047+0800 Example[58224:17573152] [as_client] AVAudioSession_iOS.mm:2367 Failed to set category, error: -50
2023-09-20 18:43:34.160786+0800 Example[58224:17573152] 停止---12
2023-09-20 18:43:34.350582+0800 Example[58224:17573152] 即将出现---13
2023-09-20 18:43:34.694315+0800 Example[58224:17573152] 即将出现---9
2023-09-20 18:43:34.694459+0800 Example[58224:17573152] 播放----9

@wlyy460
Copy link
Author

wlyy460 commented Sep 22, 2023

再试试最新代码

新发现个问题:按照示例中清空后切换索引这项,清空数据后调用reloaddata刷新并切换指定索引,didEndDisplayingCell没有收到回调,视频没有停止。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants