ios fix UIRefreshControl bug

NS_CLASS_AVAILABLE_IOS(6_0)   UIRefreshControl 有个毛病有时会出bug  动画下拉就不动了,这里给出修复处理:

@interface UICollectionView (FixRefreshControlJump)

@end
#import "UICollectionView+FixRefreshControlJump.h"
#import <objc/runtime.h>

@implementation UICollectionView (FixRefreshControlJump)

+ (void)load
{
    Method originMethod = class_getInstanceMethod([UICollectionView class], @selector(setContentInset:));
    Method newMethod = class_getInstanceMethod([UICollectionView class], @selector(setNewContentInset:));
    method_exchangeImplementations(originMethod, newMethod);
    
    UIRefreshControl
}

- (void)setNewContentInset:(UIEdgeInsets)contentInset
{
    if (self.tracking) {
        CGFloat diff = contentInset.top - self.contentInset.top;
        CGPoint translation = [self.panGestureRecognizer translationInView:self];
        translation.y -= diff * 3.0 / 2.0;
        [self.panGestureRecognizer setTranslation:translation inView:self];
    }
    if ([self respondsToSelector:@selector(setNewContentInset:)]) {
        [self setNewContentInset:contentInset];
    }
}

@end

通过 method_exchangeImplementations swzing的方式处理问题

推荐阅读:

http://www.cnblogs.com/kesalin/archive/2012/01/05/objc_method_swizzling.html

 

原文地址:https://www.cnblogs.com/tinkl/p/3719374.html