MJ刷新控件MJRefreshFooterView上拉之后收不回来的解决办法

修改MJRefreshFooterView.m文件中的这个方法

#pragma mark - 状态相关
#pragma mark   设置状态
- (void)setState:(MJRefreshState)state
{
    if (_state == state) return;
    MJRefreshState oldState = _state;
    [super setState:state];

    switch (state){

        case MJRefreshStatePulling:{
            _statusLabel.text = MJRefreshFooterReleaseToRefresh;

            [UIView animateWithDuration:MJRefreshAnimationDuration animations:^{
                _arrowImage.transform = CGAffineTransformIdentity;
                UIEdgeInsets inset = _scrollView.contentInset;
                inset.bottom = _scrollViewInitInset.bottom;
                _scrollView.contentInset = inset;
            }];
            break;
        }

        case MJRefreshStateNormal:{
            _statusLabel.text = MJRefreshFooterPullToRefresh;

            // 刚刷新完毕
            CGFloat animDuration = MJRefreshAnimationDuration;
            CGFloat deltaH = [self contentBreakView];
            CGPoint tempOffset;

            int currentCount = [self totalDataCountInScrollView];
            if (MJRefreshStateRefreshing == oldState && deltaH > 0 && currentCount != _lastRefreshCount) {

                tempOffset = _scrollView.contentOffset;
                if (_appDelegate.isA) {//A视图:隐藏FooterView
                    tempOffset.y -= 60;
                }else if(!_appDelegate.isA){//B视图:上拉之后显示后面的新数据
                    tempOffset.y += 60;
                }
                animDuration = 0;
            }

            [UIView animateWithDuration:animDuration animations:^{
                _arrowImage.transform = CGAffineTransformMakeRotation(M_PI);
                UIEdgeInsets inset = _scrollView.contentInset;
                inset.bottom = _scrollViewInitInset.bottom;
                _scrollView.contentInset = inset;
            }];

            if (animDuration == 0) {
                _scrollView.contentOffset = tempOffset;
            }
            break;
        }

        case MJRefreshStateRefreshing:{
            // 记录刷新前的数量
            _lastRefreshCount = [self totalDataCountInScrollView];

            _statusLabel.text = MJRefreshFooterRefreshing;
            _arrowImage.transform = CGAffineTransformMakeRotation(M_PI);
            [UIView animateWithDuration:MJRefreshAnimationDuration animations:^{
                UIEdgeInsets inset = _scrollView.contentInset;
                CGFloat bottom = MJRefreshViewHeight + _scrollViewInitInset.bottom;
                CGFloat deltaH = [self contentBreakView];
                if (deltaH < 0) { // 如果内容高度小于view的高度
                    bottom -= deltaH;
                }
                inset.bottom = bottom;
                _scrollView.contentInset = inset;
            }];
            break;
        }

        default:
            break;
    }
}
时间: 2024-11-08 10:24:40

MJ刷新控件MJRefreshFooterView上拉之后收不回来的解决办法的相关文章

在注册控件时出现对DllRegisterServer的调用失败的解决办法

最近做了一个控件,在WIN7 32位机子上注册控件时出现如下提示: 这样的问题明白人一看就知道这是dll或ocx控件未正确注册的原因,但是怎样解决这个问题,确是比较棘手. 遇到这个问题的时候大家首先能想到的是手动注册该控件.一般有两种方法(1)调用系统本身自带的regsvr32.exe注册器进行注册,但是注册后发现提示注册错误,未能成功注册.这是什么原因呢?难道是没有管理员权限?可我明明是以管理员身份登录电脑的啊.然后便是发送该程序快捷方式到桌面,右键该快捷方式,单击"以管理员身份运行"

GridView和各种相关控件的上拉和下拉

下载依赖类库 https://yunpan.cn/cBs8jPPYRQnTV  访问密码 f721 把类库的东西全部复制到工程 在app的bui下添加 dependencies { compile 'com.android.support:recyclerview-v7:23.+' compile 'com.android.support:cardview-v7:23.+' }改成相应的v7包的版本号如:7.23 布局中:使用 com.jingchen.pulltorefresh.PullToR

报表reportviewer控件使用时,单行文本过长的解决办法

最近在做winform的报表,客户需要把纸质模板可以在系统中打印.一开始设计,认为vs自带控件reportviewer可以解决,但在测试过程中发现:若单行文本过长,报表自动分页,弊端是分页后,第一页文本框底部边框和第二页文本框顶端边框无法显示,由于客户是政府机关,要求严格,只好解决这个问题.在解决过程中也是想各种办法,第一种,判断是否分页,分页后,该文本框是否存在本页,若存在,则在相应分页底部和顶端划线,可是搜索属性框,并没有这些属性值,放弃.第二种,主体加边框,与矩阵重合,矩阵边框不要,使用主

DuiLib中的GifAnim控件无法加载或者播放Gif动画的解决办法

一.无法加载gif图片的问题,因为GifAnim控件加载图片使用的是Gdi+,然而在控件中并没有初始化Gdi+,所以只需要在自己的主窗口类中添加如下代码: 1 // 全局 2 Gdiplus::GdiplusStartupInput gdiplusStartupInput; 3 ULONG_PTR gdiplusToken; 4 // 初始化函数中 5 //初始化GDI+. 6 GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL

刷新控件,审核

上架第一个APP到苹果商店被拒绝5次 MJ刷新控件MJRefreshFooterView上拉之后收不回来的解决办法 MJ刷新控件 地址 对比软件 DiffFork 文件比较(diff)工具(GUI) for Mac

点击ViewGroup时其子控件也变成pressed状态的原因分析及解决办法

这个问题,当初在分析touch事件处理的时候按理应该分析到的,可是由于我当时觉得这块代码和touch的主题不是那么紧密, 就这么忽略掉了,直到后来在这上面遇到了问题.其实这个现象做Android开发的应该或多或少的都遇到过,我在我们自己的app中 也发现了这一现象,当初是百思不得其解,因为按照我自己的研究.分析,只有在一个view接受按下的touch事件时,才会调到view 自己的setPressed方法,从而改变background状态啊.这里的case明显没有按下这个子view啊,按下的是V

新浪微博项目-上下拉刷新控件经验总结

1.下拉控件的刷新:  原理:通过监听UIRefresh下拉刷新控件的拖拽,向服务器发送请求数据,当将获取的数据插入到模型最前面,更新并加载到tableView上时,结束刷新:>创建UIRefresh下拉刷新控件,绑定监听并添加到tableView上面:>当控件下拉时: 1.向服务器发送请求数据,当将获取的数据存入模型,更新并加载到tableView上时,结束刷新: 2.下拉刷新的时间距离上次下拉时间间隔太短时,不再向服务器发送请求数据,直接返回,结束刷新: (补充:当下拉刷新控件同时下拉多次

Qt qml中listview 列表视图控件(下拉刷新、上拉分页、滚动轴)

Qt qml中listview 列表视图控件(下拉刷新.上拉分页.滚动轴) 来源 https://www.cnblogs.com/surfsky/p/4352898.html 设置ListView涉及到将contentsY,即视图的可见部分的顶部,设置y为委托的值.另一个更改是interactive将视图设置为false.这样可以防止视图移动.用户不能再滚动列表或更改当前Item. contentY为列表上拉后列表左上角点距显示框左上解点的高度listView1.height为可显示部分的高度,

github上开源项目MJRefresh自定义刷新控件

前言:在项目开发过程中经常有需要进行刷新操作,MJ博主开源的MJRefresh为我们节省了大量的时间.只需要几行代码就可给UITableview,UICollectionview,UISCrollview,UIWebview集成上拉或下拉操作.更强大的是自定义功能,无论产品经理要什么上拉下拉动态效果,MJRefresh带你装逼带你酷炫下拉刷新.先来看看自定义下拉的动态效果. 1 利用cocoapods安装MJRefresh,如果不明白cocoapods使用方法,请参照cocopods安装和使用教