UIPageViewController仿真翻頁模式下的坑

? ? ? ? 最近寫了一個閱讀器App,產(chǎn)品要求閱讀頁使用仿真翻頁模式栏赴,我使用了蘋果提供的UIPageViewController的仿真翻頁模式,沒有想到系統(tǒng)的也有坑靖秩。遇到的坑都是跟用戶快速翻頁有關(guān)须眷。

坑一:快速翻頁出現(xiàn)閃退

當(dāng)快速翻閱的時候,出現(xiàn)下面的閃退日志

Received CA callback for state, but active state queue is empty'?

(

????0?? CoreFoundation??????????????????????0x000000010780df45 __exceptionPreprocess + 165

????1?? libobjc.A.dylib???????????????????? 0x000000010a81cdeb objc_exception_throw + 48

????2?? CoreFoundation??????????????????????0x000000010780ddaa +[NSException raise:format:arguments:] + 106

????3?? Foundation??????????????????????????0x0000000107f5a5ee -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 198

????4?? UIKit?????????????????????????????? 0x000000010911a5c7 -[_UIPageCurl _pageCurlAnimationDidStop:withState:] + 473

????5?? UIKit?????????????????????????????? 0x00000001091146d1 -[_UIPageCurlState animationDidStop:finished:] + 106

????6?? QuartzCore??????????????????????????0x000000010b248fa0 _ZN2CA5Layer23run_animation_callbacksEPv + 308

????7?? libdispatch.dylib?????????????????? 0x000000010b38e49b _dispatch_client_callout + 8

????8?? libdispatch.dylib?????????????????? 0x000000010b3762af _dispatch_main_queue_callback_4CF + 1738

????9?? CoreFoundation??????????????????????0x000000010776e2e9 __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9

????10??CoreFoundation??????????????????????0x000000010772f8a9 __CFRunLoopRun + 2073

????11??CoreFoundation??????????????????????0x000000010772ee08 CFRunLoopRunSpecific + 488

????12??GraphicsServices????????????????????0x000000010cb08ad2 GSEventRunModal + 161

????13??UIKit?????????????????????????????? 0x00000001089c230d UIApplicationMain + 171

????14????á????à??????????????????????????? 0x0000000105afd32f main + 111

????15??libdyld.dylib?????????????????????? 0x000000010a17e92d start + 1

????16????????????????????????????????????? 0x0000000000000001 0x0 + 1

)

libc++abi.dylib: terminate_handler unexpectedly threw an exception

當(dāng)修改了取出設(shè)置當(dāng)前閱讀頁的動畫時沟突,在一定程度上緩解了閃退的出現(xiàn)花颗,代碼如下:

[_pageViewController setViewControllers:@[[self readViewWithPage:_currentPage]] direction:UIPageViewControllerNavigationDirectionReverse animated:NO completion:nil];

你可能還會遇到其他關(guān)于動畫或者內(nèi)存閃退的日志,都可以這樣處理惠拭。

坑二:快速左右翻頁出現(xiàn)頁面錯亂

? ? ? ? 我的應(yīng)用中有遇到一個這樣的bug,當(dāng)你快速向前翻頁然后又快速向后翻頁扩劝,就會出現(xiàn)向前翻的某一頁一直出現(xiàn)的現(xiàn)象,繼續(xù)操作职辅,會出現(xiàn)你想不到的bug現(xiàn)象棒呛。這是蘋果控件本身緩存的一個bug,研究了很久域携,沒有更好的辦法簇秒,想到的只是讓用戶翻頁速度可控,就是控制用戶的點(diǎn)擊速度涵亏,思路就像大家經(jīng)常會用到的不讓按鈕連續(xù)點(diǎn)擊一樣宰睡,或者是控制在連續(xù)點(diǎn)擊時間間隔為一個固定的數(shù)值蒲凶,比如1秒內(nèi)點(diǎn)擊一次,等等拆内。

我的代碼處理如下:

#pragma mark - UIPageViewController DataSource

- (nullableUIViewController*)pageViewController:(UIPageViewController*)pageViewController viewControllerBeforeViewController:(UIViewController*)viewController {

? ? WeakSelf

? ? _pageViewController.view.userInteractionEnabled = NO;//限制UIPageViewController上的手勢事件

? ? dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

? ? ? ? weakSelf.pageViewController.view.userInteractionEnabled = YES;//恢復(fù)UIPageViewController上的手勢事件

? ? });

..........

}

- (nullableUIViewController*)pageViewController:(UIPageViewController*)pageViewController viewControllerAfterViewController:(UIViewController*)viewController {

? ? WeakSelf

? ? _pageViewController.view.userInteractionEnabled = NO;//限制UIPageViewController上的手勢事件

? ? dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5* NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

? ? ? ? ? weakSelf.pageViewController.view.userInteractionEnabled = YES;//恢復(fù)UIPageViewController上的手勢事件

? ? });

..........

}

上面代碼的處理效果是實(shí)現(xiàn)0.5內(nèi)允許用戶翻頁一次旋圆,這樣就避免了用戶翻頁過快,也就避免了翻頁過快帶來的一系列異常的現(xiàn)象麸恍。

如果有大神有更好的處理方法灵巧,解決這個bug也煩請留言,大家共同探討抹沪,共同學(xué)習(xí)~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末刻肄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子融欧,更是在濱河造成了極大的恐慌敏弃,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件噪馏,死亡現(xiàn)場離奇詭異麦到,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)欠肾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進(jìn)店門瓶颠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刺桃,你說我怎么就攤上這事粹淋。” “怎么了瑟慈?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵桃移,是天一觀的道長。 經(jīng)常有香客問我葛碧,道長谴轮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任吹埠,我火速辦了婚禮第步,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缘琅。我一直安慰自己粘都,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布刷袍。 她就那樣靜靜地躺著翩隧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪呻纹。 梳的紋絲不亂的頭發(fā)上堆生,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天专缠,我揣著相機(jī)與錄音,去河邊找鬼淑仆。 笑死涝婉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔗怠。 我是一名探鬼主播墩弯,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寞射!你這毒婦竟也來了渔工?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤桥温,失蹤者是張志新(化名)和其女友劉穎引矩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侵浸,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脓魏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了通惫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡混蔼,死狀恐怖履腋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惭嚣,我是刑警寧澤遵湖,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站晚吞,受9級特大地震影響延旧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜槽地,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一迁沫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捌蚊,春花似錦集畅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至窗宦,卻和暖如春赦颇,著一層夾襖步出監(jiān)牢的瞬間二鳄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工媒怯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留订讼,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓沪摄,卻偏偏與公主長得像躯嫉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子杨拐,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評論 2 355

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

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,103評論 1 32
  • 1.設(shè)計模式是什么哄陶? 你知道哪些設(shè)計模式帆阳,并簡要敘述?設(shè)計模式是一種編碼經(jīng)驗(yàn)屋吨,就是用比較成熟的邏輯去處理某一種類型...
    龍飝閱讀 2,153評論 0 12
  • 1蜒谤、網(wǎng)絡(luò)層和業(yè)務(wù)層的對接設(shè)計 使用哪種交互模式來和業(yè)務(wù)層對接 : 使用Delegate為主,目的是為了(1)減少代...
    雷3雷閱讀 399評論 0 0
  • 關(guān)聯(lián)分析至扰,也稱購物籃分析鳍徽,本文目的: 基于訂單表,用最少的python代碼完成數(shù)據(jù)整合及關(guān)聯(lián)分析 文中所用數(shù)據(jù)下載...
    fycoopery閱讀 11,867評論 1 14
  • 近段時間的流浪大師沈巍持續(xù)走紅濒募,網(wǎng)上的評論,視頻圾结,文章瑰剃,隨便一搜一大把。其中的評論筝野,贊美的見多數(shù)晌姚,負(fù)面的挺少,畢竟...
    紅巖夢閱讀 164評論 0 3