JXPagingView icon indicating copy to clipboard operation
JXPagingView copied to clipboard

往上推的时候 为啥顶部的headerview一下就上去了 并没有根据手势滑动的距离慢慢推上去

Open thesixdream opened this issue 1 year ago • 3 comments

thesixdream avatar Mar 31 '25 05:03 thesixdream

  public func listViewDidScrollCallback(callback: @escaping (UIScrollView) -> Void) {
    listViewDidScrollCallback = callback
  }

  func scrollViewDidScroll(_ scrollView: UIScrollView) {
    listViewDidScrollCallback?(collectionView)
  }

这个调用了吗?

baiyidjp avatar Apr 01 '25 05:04 baiyidjp

可以参考这个


class PageViewController: UIViewController {
    private var scrollCallback: ((UIScrollView) -> Void)?

    func setupUI() {
        view.addSubview(scrollView)
        scrollView.addSubview(contentView)
    }

    lazy var scrollView: UIScrollView = {
        let scroll = UIScrollView()
        scroll.showsVerticalScrollIndicator = false
        scroll.delegate = self
        return scroll
    }()

    lazy var contentView: UIView = {
        let content = UIView()
        return content
    }()
}

extension PageViewController: UIScrollViewDelegate {
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        scrollCallback?(scrollView)
    }
}

extension PageViewController: JXPagingViewListViewDelegate {
    func listView() -> UIView { view }
    
    func listScrollView() -> UIScrollView {
        return scrollView
    }
    
    func listViewDidScrollCallback(callback: @escaping (UIScrollView) -> ()) {
        self.scrollCallback = callback;
    }
}


yingmiaohuangg avatar Apr 10 '25 10:04 yingmiaohuangg

我这里通过这个方式解决了: 问题在于 func pagingView(_ pagingView: JXPagingView, initListAtIndex index: Int) -> JXPagingViewListViewDelegate 代理中返回的视图的 class 中,要加入这个

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        listViewDidScrollCallback?(scrollView)
    }

可以参考下面这个代码:

class TestListView:UIView, UITableViewDataSource, UITableViewDelegate,JXPagingViewListViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        100
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        UITableViewCell()
    }
    
    func listScrollView() -> UIScrollView {
        tableView
    }
    
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        listViewDidScrollCallback?(scrollView)
    }
    
    private lazy var tableView: UITableView = {
        let view = UITableView()
        view.dataSource = self
        view.delegate = self
        view.rowHeight = 20
        return view
    }()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        layout(tableView) { make in
            make.edges.equalToSuperview()
        }
        tableView.reloadData()
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
}

734138477 avatar May 13 '25 08:05 734138477