Closed zealfung closed 2 months ago
segmentedListContainerView
line 431 的判断改成 guard scrollView.isTracking || scrollView.isDragging || scrollView.isDecelerating
试试
正常,一些小瑕疵,JXPagingListContainerView 也有这个问题 彻底停止滚动调用 multiScrollViewDidEndScroll(),自己修改下就行
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if !decelerate {
multiScrollViewDidEndScroll()
}
}
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
multiScrollViewDidEndScroll()
}
func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
multiScrollViewDidEndScroll()
}
private func multiScrollViewDidEndScroll() {
// 关键多执行这一行
listDidAppearOrDisappear(scrollView: scrollView)
//滑动到一半又取消滑动处理
if willAppearIndex != -1 || willDisappearIndex != -1 {
listWillDisappear(at: willAppearIndex)
listWillAppear(at: willDisappearIndex)
listDidDisappear(at: willAppearIndex)
listDidAppear(at: willDisappearIndex)
willDisappearIndex = -1
willAppearIndex = -1
}
}
JXSegmentedListContainerView类型为scrollView 列表是两个VC,左右滑动切换列表时(多滑动切换两次很容易重现),两个VC分别的listWillAppear、listDidAppear、listWillDisappear、listDidDisappear代理函数回调错乱,并且最终调用的listDidAppear不是正在显示的那个VC的