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

listWillAppear、listDidAppear、listWillDisappear、listDidDisappear代理函数回调错乱 #204

Open
zealfung opened this issue Mar 22, 2022 · 2 comments

Comments

@zealfung
Copy link

JXSegmentedListContainerView类型为scrollView
列表是两个VC,左右滑动切换列表时(多滑动切换两次很容易重现),两个VC分别的listWillAppear、listDidAppear、listWillDisappear、listDidDisappear代理函数回调错乱,并且最终调用的listDidAppear不是正在显示的那个VC的

@DNC-7
Copy link

DNC-7 commented Jun 16, 2022

segmentedListContainerView line 431 的判断改成 guard scrollView.isTracking || scrollView.isDragging || scrollView.isDecelerating 试试

@wrxdz
Copy link

wrxdz commented Aug 10, 2022

正常,一些小瑕疵,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
    }

}

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