前言app
项目中遇到的坑,大多数都是由于以前没有使用到这部分的内容或者是对技术(第三方控件)理解还不到位所致,因为以前的项目都只是设计上拉刷新,因此对上下拉刷新都在刷新时,刷新事件的处理认识不够,致使了数据集出现了问题。今天下班回家特意的研究了这个方面的内容;经过isRefreshing来判断是否要禁用后一个刷新。spa
(一)上下拉刷新设置(代码就不写全了,写了大概的代码);设计
__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关闭了下拉刷新);同理先上拉在下拉的道理是同样的。code
(二)总结orm
在运用技术时,不怕遇到多少坑也不要太早的说放弃;以前遇到这个问题项目经理一直在旁边说实在不行就只保留一个刷新,可是我平时看别人的app是能够两个刷新都保留且不会出现任何问题的,所以保留两个刷新是能够走通的;仍是那句话,当你差很少想放弃的时候或别人劝你放弃的时候,不妨自信点,也许就会有意想不到的收获。事件