亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

iOS開發教程之UIRefreshControl使用的踩坑指南

2020-07-26 02:28:36
字體:
來源:轉載
供稿:網友

iOS UIRefreshControl基本用法

- (void) loadRefreshView{ // 下拉刷新 _refreshControl = [[UIRefreshControl alloc] init]; _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"]; [_refreshControl addTarget:self action:@selector(loadData) forControlEvents:UIControlEventValueChanged]; [self.securityCollectionView addSubview:_refreshControl]; [self.securityCollectionView sendSubviewToBack:_refreshControl];}// 設置刷新狀態- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{ decelerate = YES; if (scrollView.contentOffset.y < HEIGHT_REFRESH) {  dispatch_async(dispatch_get_main_queue(), ^{   _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"正在刷新"];  });  [_refreshControl beginRefreshing];  [self loadData]; }}// 設置刷新狀態- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ if (scrollView.contentOffset.y >= HEIGHT_REFRESH) {  _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"]; } else if (!scrollView.decelerating) {  _refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"松開刷新"]; }}// 結束刷新- (void) endRefreshControl{ [_refreshControl endRefreshing];}// 刷新的回調方法- (void) loadData{ [self endRefreshControl]; // [self performSelector:@selector(endRefreshControl) withObject:nil afterDelay:2];}//設置如果collection的內容沒有占滿整個collectionView,//這個就不能下拉滑動,沒法實現下拉;但是設置下面這個就可以實現下拉了self.rootView.collectionView.alwaysBounceVertical = YES;

問題描述

接上一個話題,實現了TabBar的點擊刷新以后,開始繼續寫完成功能,刷新UITableView,于是考慮到iOS 10以后,UIScrollView已經有UIRefreshControl的屬性了,干脆用自帶的寫。于是就有了如下的代碼:

添加UIRefreshControl到UITableView上去

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];refreshControl.tintColor = [UIColor grayColor];refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"下拉刷新"];[refreshControl addTarget:self action:@selector(refreshTabView) forControlEvents:UIControlEventValueChanged];self.newsTableView.refreshControl = refreshControl;

下拉刷新事件

-(void)refreshTabView{//添加一條數據[self.newsData insertObject:[self.newsData firstObject] atIndex:0];dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{[self.newsTableView reloadData];if ([self.newsTableView.refreshControl isRefreshing]) {[self.newsTableView.refreshControl endRefreshing];}});}

TabBar點擊事件

-(void)doubleClickTab:(NSNotification *)notification{//這里有個坑 就是直接用NSInteger接收會有問題 數字不對//因為上個界面傳過來的時候封裝成了對象,所以用NSNumber接收后再取值NSNumber *index = notification.object;if ([index intValue] == 1) {//刷新[self.newsTableView.refreshControl beginRefreshing];}}

此時的效果如下,直接下拉刷新可以,但是點擊TabBar不可以:

刷新異常情況.gif

分析問題

經過Google幫助,終于知道原因,因為系統自帶的UIRefreshControl有兩個陷阱:

  • 調用-beginRefreshing方法不會觸發UIControlEventValueChanged事件;
  • 調用-beginRefreshing方法不會自動顯示進度圈。

也就是說,只是調用-beginRefreshing方法是不管用的,那么對應的需要做兩件事:

  • 手動設置UIRefreshControl的事件;
  • 手動設置UITableView的ContentOffset,露出進度圈。

解決問題

只需要修改上面第3步中的代碼如下:

-(void)doubleClickTab:(NSNotification *)notification{//這里有個坑 就是直接用NSInteger接收會有問題 數字不對//因為上個界面傳過來的時候封裝成了對象,所以用NSNumber接收后再取值NSNumber *index = notification.object;if ([index intValue] == 1) {//刷新//animated不要為YES,否則菊花會卡死[self.newsTableView setContentOffset:CGPointMake(0, self.newsTableView.contentOffset.y - self.newsTableView.refreshControl.frame.size.height) animated:NO];[self.newsTableView.refreshControl beginRefreshing];[self.newsTableView.refreshControl sendActionsForControlEvents:UIControlEventValueChanged];}}

最終效果:


刷新正常情況.gif

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国内产的精品视频在线观看| 国产丝袜视频一区| 亚洲午夜激情免费视频| 欧美日韩一区免费| 国产91在线视频| 欧美成人中文字幕| 日韩欧美在线第一页| 欧美在线观看一区二区三区| 国产精品自产拍高潮在线观看| 亚洲性69xxxbbb| 超薄丝袜一区二区| 亚洲午夜性刺激影院| 色偷偷av亚洲男人的天堂| 国产91色在线|免| 亚洲欧美在线一区二区| 国产精品免费电影| 日本成人在线视频网址| 亚洲精品国产精品乱码不99按摩| 91精品中文在线| 国产精品18久久久久久首页狼| 高跟丝袜欧美一区| 国产精彩精品视频| 日韩专区在线观看| 国产精品免费一区| 欧美日韩国产综合视频在线观看中文| 黑人巨大精品欧美一区二区| 亚洲天堂视频在线观看| 影音先锋日韩有码| 亚洲天堂av在线免费观看| 韩国一区二区电影| 91av在线视频观看| 亚洲日本中文字幕| 4388成人网| 亚洲人成免费电影| 亚洲欧美国产视频| 亚洲国产精品小视频| 色综合色综合网色综合| 啪一啪鲁一鲁2019在线视频| 伊人久久免费视频| 精品久久久国产| 亚洲美女黄色片| 亚洲欧美日韩国产中文专区| 欧美性猛xxx| 国产精品高潮呻吟久久av黑人| 亚洲国产精品yw在线观看| 欧美性xxxxhd| 国产精品免费视频久久久| 欧美在线免费看| 亚洲欧洲在线免费| 8x拔播拔播x8国产精品| 欧美日韩国产va另类| 91亚洲精品久久久久久久久久久久| 2024亚洲男人天堂| 久久夜色精品国产| 中文字幕亚洲一区二区三区五十路| 神马国产精品影院av| 日韩美女激情视频| 欧美日韩综合视频网址| 成人中文字幕在线观看| 欧美xxxx14xxxxx性爽| 奇门遁甲1982国语版免费观看高清| 日韩精品视频在线| 欧洲午夜精品久久久| 亚洲视频国产视频| 欧美激情精品久久久久久大尺度| 成人在线视频网| 亚洲精品mp4| 国产精品美女在线观看| 国产免费观看久久黄| 国产偷亚洲偷欧美偷精品| 久久成人这里只有精品| 国产女精品视频网站免费| 国产成人精品国内自产拍免费看| 4p变态网欧美系列| 亚洲淫片在线视频| 国产视频精品一区二区三区| 深夜福利国产精品| 国产精品专区第二| 亚洲精品99999| 欧美亚洲视频在线观看| 午夜免费日韩视频| 伊人久久精品视频| 久久亚洲一区二区三区四区五区高| 欧美另类精品xxxx孕妇| 亚洲精品电影在线| 精品国产成人av| 国产精品极品在线| 91av视频在线观看| 国产精品福利片| 亚洲精品美女久久久| 亚洲性猛交xxxxwww| 羞羞色国产精品| 国产精品www色诱视频| 日韩一级黄色av| 国产精品成人免费视频| 日本成人在线视频网址| www欧美xxxx| 亚洲精品之草原avav久久| 日本精品免费观看| 日韩精品中文字幕在线| 91精品视频免费| 97超级碰在线看视频免费在线看| 成人h猎奇视频网站| 成人天堂噜噜噜| 精品一区二区三区电影| 精品亚洲一区二区三区在线播放| 91精品一区二区| 日本免费在线精品| 丰满岳妇乱一区二区三区| 久久视频在线视频| 亚洲午夜色婷婷在线| 国产一区二区日韩精品欧美精品| 中日韩美女免费视频网站在线观看| 国产一区二区久久精品| 97精品在线视频| 色妞久久福利网| 国产精品视频久| 亚洲在线观看视频网站| 日本久久久久亚洲中字幕| 91视频国产精品| 91精品国产自产在线观看永久| 久久国产精品99国产精| 久久成人这里只有精品| 夜夜狂射影院欧美极品| 亚洲欧美制服中文字幕| 欧美xxxx做受欧美.88| 日韩中文理论片| 色久欧美在线视频观看| 91美女片黄在线观看游戏| 成人a视频在线观看| 北条麻妃一区二区三区中文字幕| 亚洲第一区中文99精品| 亚洲性线免费观看视频成熟| 日韩国产精品视频| 日韩美女av在线免费观看| 亚洲天堂久久av| 亚洲自拍偷拍一区| 2018日韩中文字幕| 欧美日韩国产精品| 久久久精品国产网站| 日韩国产精品视频| 亚洲第一级黄色片| 日韩欧美在线第一页| 久久久国产一区| xxx成人少妇69| 日本一区二三区好的精华液| 中文字幕av一区二区三区谷原希美| 性金发美女69hd大尺寸| 97在线免费观看| 欧美性xxxxhd| 福利一区福利二区微拍刺激| 国产一区二区三区视频免费| 亲子乱一区二区三区电影| 日韩精品在线观看网站| 精品日韩美女的视频高清| 久久久久久久影视| 精品久久久在线观看| 亚洲欧洲在线播放| 一本色道久久88综合日韩精品| 日韩三级影视基地| 精品国产鲁一鲁一区二区张丽| 国产成人精品在线视频| 亚洲国产另类 国产精品国产免费| 国产亚洲精品久久久久久牛牛|