CoderMJLee / MJRefresh

An easy way to use pull-to-refresh.
MIT License
13.8k stars 3.55k forks source link

我需要下拉 60px 松手刷新, 超过 100px 松手执行其他功能,请问使用 MJRefresh 可以实现吗? #1582

Open crossPQW opened 1 year ago

crossPQW commented 1 year ago

你的新功能建议是否牵扯到某个常见的问题? NO

你希望达到的效果 我需要在下拉到不同的阶段执行一些不同的任务, 比如 60-100 松手是刷新,100-200 松手修改刷新 UI,超过 200 松手打开新的页面。

你能考虑到的可选实现方案 想问一下现有 MJRefresh 是否可以实现。

wolfcon commented 1 year ago

参照 MJRefreshHeader 的这段代码, 在我的注释位置做修改, 增加 State 的状态. 在 setState 方法中增加事件, 暴露给外面

- (void)scrollViewContentOffsetDidChange:(NSDictionary *)change
{
    [super scrollViewContentOffsetDidChange:change];

    ...
        // 在此处判断 < normal2pullingOffsetY 是刷新, 你自己计算> xxx && < xxx, 刷新 UI , > xxxx 打开新页面
        if (self.state == MJRefreshStateIdle && offsetY < normal2pullingOffsetY) {
            // 转为即将刷新状态
            self.state = MJRefreshStatePulling;
        } else if (self.state == MJRefreshStatePulling && offsetY >= normal2pullingOffsetY) {
            // 转为普通状态
            self.state = MJRefreshStateIdle;
        }
    } else if (pullingPercent < 1) {
        self.pullingPercent = pullingPercent;
    }
}