MJRefresh使用過程中遇到的一個問題

需求

  • 一個controller中包含一個tableview和兩個button隅熙,點擊button墓臭,tableview進行下拉刷新蘸鲸;
  • 一個controller中包含一個collectionview和兩個button,點擊button窿锉,collectionview進行下拉刷新酌摇。

實現(xiàn)

使用Swift3.0語法,使用第三方框架MJRefresh(3.0.8版本)進行實現(xiàn)嗡载。

代碼

在按鈕的點擊事件中判斷窑多,是否正在進行刷新,如果正在進行下拉刷新鼻疮,則先停止下拉刷新怯伊,在開啟下拉刷新琳轿。
代碼截圖如下:

注冊tableview下拉刷新.png
tableview代碼.png
注冊collectionview下拉刷新.png
collectionview代碼.png

效果

tableview演示.gif
collectionview演示.gif

問題

從截圖中的動畫效果和打印結(jié)果來看判沟,在tableview中,正在刷新時崭篡,點擊按鈕挪哄,先停止了刷新,然后又開啟的刷新琉闪,運行結(jié)果符合預(yù)期迹炼。但是在collectionview中,正在刷新時颠毙,點擊按鈕斯入,直接停止了刷新,并沒有開啟新的刷新蛀蜜,運行結(jié)果不符合預(yù)期滴某。
為什么同一個框架饼灿,效果不一樣呢证舟?

探索

這個地方漆枚,我們用到了框架提供的是三個方法:

mj_header.isRefreshing()
mj_header.beginRefreshing()
mj_header.endRefreshing()

經(jīng)過查看這三個方法相關(guān)的源碼,我們發(fā)現(xiàn):

MJRefresh源碼.png

在endRefreshing的方法中掖疮,進行了判斷,如果是UICollectionView,endRefreshing的動作延遲了0.1秒執(zhí)行(為什么要延遲0.1s執(zhí)行?),所以我們大膽的猜想,正是由于延遲了這0.1秒,導(dǎo)致collectionView先結(jié)束再刷新實際執(zhí)行是先刷新了兩次,然后在結(jié)束。如果第二次刷新也延遲0.1秒執(zhí)行,應(yīng)該可以得到正確的結(jié)果望迎。

修改后的代碼:

延遲執(zhí)行.png

修改后的結(jié)果:

修改后的collectionview演示.gif

可以看到,延遲執(zhí)行后凌外,實際效果和預(yù)期效果相同了辩尊。

結(jié)論

在MJRefresh(3.0.8版本)中之所以出現(xiàn)上述問題,是由于框架在endRefreshing的方法中康辑,進行了判斷摄欲,如果是UICollectionView,endRefreshing的動作延遲了0.1秒執(zhí)行,導(dǎo)致了上述問題的產(chǎn)生疮薇。所以只要再次刷新時同樣延遲0.1秒執(zhí)行beginRefreshing()就可以解決問題胸墙。

拓展

目前MJRefresh的最新版本為3.1.12,我們來看看在3.1.12版本中這個問題有什么變化按咒。

最新版本源碼.png

在這個版本中迟隅,endRefreshing統(tǒng)一添加到主線程異步執(zhí)行。所以我們的代碼也應(yīng)該把第二次beginRefreshing添加到主線程異步執(zhí)行:

添加到主線程異步執(zhí)行.png

思考

從這兩個版本的變化中可以看出励七,3.0.8中的處理是個臨時方法智袭,最終的處理方法是3.1.12中添加到主線程異步執(zhí)行。
在我的經(jīng)驗中呀伙,添加的主線程異步執(zhí)行补履,解決了在一個動畫未執(zhí)行完畢時又添加一個動畫導(dǎo)致沖突的問題添坊。所以猜想作者可能是為了解決正在刷新的動畫或者用戶對scrollview進行操作的動畫和結(jié)束刷新的動畫造成沖突剿另。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市贬蛙,隨后出現(xiàn)的幾起案子雨女,更是在濱河造成了極大的恐慌,老刑警劉巖阳准,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氛堕,死亡現(xiàn)場離奇詭異,居然都是意外死亡野蝇,警方通過查閱死者的電腦和手機讼稚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門括儒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锐想,你說我怎么就攤上這事帮寻。” “怎么了赠摇?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵固逗,是天一觀的道長。 經(jīng)常有香客問我藕帜,道長烫罩,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任洽故,我火速辦了婚禮贝攒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘时甚。我一直安慰自己饿这,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布撞秋。 她就那樣靜靜地躺著长捧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吻贿。 梳的紋絲不亂的頭發(fā)上串结,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天,我揣著相機與錄音舅列,去河邊找鬼肌割。 笑死,一個胖子當(dāng)著我的面吹牛帐要,可吹牛的內(nèi)容都是我干的把敞。 我是一名探鬼主播,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼榨惠,長吁一口氣:“原來是場噩夢啊……” “哼奋早!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起赠橙,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤耽装,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后期揪,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掉奄,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年凤薛,在試婚紗的時候發(fā)現(xiàn)自己被綠了姓建。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诞仓。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖速兔,靈堂內(nèi)的尸體忽然破棺而出狂芋,到底是詐尸還是另有隱情,我是刑警寧澤憨栽,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布帜矾,位于F島的核電站,受9級特大地震影響屑柔,放射性物質(zhì)發(fā)生泄漏屡萤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一掸宛、第九天 我趴在偏房一處隱蔽的房頂上張望死陆。 院中可真熱鬧,春花似錦唧瘾、人聲如沸措译。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽领虹。三九已至,卻和暖如春求豫,著一層夾襖步出監(jiān)牢的瞬間塌衰,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工蝠嘉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留最疆,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓蚤告,卻偏偏與公主長得像努酸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子杜恰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫获诈、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,024評論 4 62
  • 嗯哼嗯哼蹦擦擦~~~ 轉(zhuǎn)載自:https://github.com/Tim9Liu9/TimLiu-iOS 目錄 ...
    philiha閱讀 4,844評論 0 6
  • 如果你問我什么是青春箫章, 我會回答:青春就是荷爾蒙和夢想烙荷。
    若風(fēng)在野閱讀 104評論 0 0
  • 與陳生結(jié)婚多年镜会,日子過得四平八穩(wěn)檬寂,時不時也一地雞毛,我天性中的叛逆與桀驁在無數(shù)場爭吵中慢慢蟄伏去戳表,估計再過些時日桶至,...
    順愿閱讀 384評論 0 0
  • 那個年代其實還是有愛情的昼伴。表哥的愛情不是被無產(chǎn)階級的革命情誼殺死的,而是被舅母活生生地掐死的镣屹。 舅母聽表哥說他要退...
    我是裸猿閱讀 446評論 1 2