前言
项目中遇到的坑,大多数都是因为之前没有使用到这部分的内容或者是对技术(第三方控件)理解还不到位所致,由于之前的项目都只是设计上拉刷新,所以对上下拉刷新都在刷新时,刷新事件的处理认识不够,导致了数据集出现了问题。今天下班回家特地的研究了这个方面的内容;通过isRefreshing来判断是否要禁用后一个刷新。
(一)上下拉刷新设置(代码就不写全了,写了大概的代码);
__weak typeof(self) weakSelf = self; self.tblMyCenter.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ if ([weakSelf.tblMyCenter.mj_footer isRefreshing]) { [weakSelf.tblMyCenter.mj_header performSelector:@selector(endRefreshing) withObject:nil afterDelay:0.3f]; return; } dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0f*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self loadData:^{ [weakSelf.tblMyCenter.mj_header endRefreshing]; } with:@"header刷新"]; }); }]; self.tblMyCenter.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ if ([weakSelf.tblMyCenter.mj_header isRefreshing]) { [weakSelf.tblMyCenter.mj_footer performSelector:@selector(endRefreshing) withObject:nil afterDelay:0.3f]; return; } dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0f*NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [self loadData:^{ [weakSelf.tblMyCenter.mj_footer endRefreshing]; } with:@"footer刷新"]; }); }];
由上面的代码可以看得出来,在下拉刷新正在进行时再执行下拉刷新操作时,下拉刷新会被强制的结束(执行了endRefreshing关闭了下拉刷新);同理先上拉在下拉的道理是一样的。
(二)总结
在运用技术时,不怕遇到多少坑也不要太早的说放弃;之前遇到这个问题项目经理一直在旁边说实在不行就只保留一个刷新,但是我平时看别人的app是可以两个刷新都保留且不会出现任何问题的,因此保留两个刷新是可以走通的;还是那句话,当你差不多想放弃的时候或别人劝你放弃的时候,不妨自信点,也许就会有意想不到的收获。