解決 WKWebView goback執(zhí)行無(wú)效的bug

目前移動(dòng)端的開發(fā)中會(huì)經(jīng)常使用到加載H5凰锡。Apple提供了兩種加載WebView的控件圈暗,一個(gè)是UIWebView,一個(gè)是WKWebView菩掏。WKWebView 是 Apple WWDC 2014隨iOS 8和OS X 出來(lái)的昵济,解決UIWebView加載速度慢野揪、占用內(nèi)存大的問題。之前的開發(fā)中我們要適配iOS7海铆,所以未使用≌醵瑁現(xiàn)在項(xiàng)目都適配iOS 8以上了殴边,所以就開始使用WKWebView了锤岸。下面是在開發(fā)中遇到的一個(gè) goback執(zhí)行無(wú)效 的坑板乙,故記錄下來(lái)。

1.先在這里貼上運(yùn)行效果蛋铆,大家可以先看一下。

返回失效bug.gif
屏幕快照 2018-05-09 下午3.25.13.png

gif是操作到點(diǎn)擊系統(tǒng)導(dǎo)航返回按鈕的時(shí)候斷點(diǎn)走了進(jìn)去,但是斷點(diǎn)去掉后同樣停留在了當(dāng)前的展示的興業(yè)銀行的界面了纠脾。這也就是 goBack執(zhí)行,但是并未生效捧韵。
2.解決bug步驟
1.進(jìn)入過WKWebView里面看過的話我們會(huì)知道它內(nèi)部有一個(gè)屬性是 backForwardList 瀏覽列表再来。

11525851885_.pic_hd.jpg

可以看到這里聲明了一個(gè) WKBackForwardList *backForwardList磷瘤;上面清晰的寫出了 The item immediately following the current item, or nil if there isn't one. 這句話的意思是 緊隨當(dāng)前項(xiàng)目的項(xiàng)目,如果沒有针炉,則為零扳抽。那么點(diǎn)擊進(jìn)去WKBackForwardList可以看到里面還包含了一個(gè)屬性backlist,那么就很清楚這個(gè)是返回列表了贸呢。所以這里在返回點(diǎn)擊事件中打印下這個(gè)值楞陷,看下這個(gè)值是否正確。


到這一步很明顯我們是對(duì)的结执,確實(shí)我們走到興業(yè)銀行界面時(shí),我們是走了3層坚芜。

那為什么goback會(huì)失效呢斜姥?
3.找到原因
之后由公司iOS大神指導(dǎo)后,發(fā)現(xiàn)了問題铸敏。之前寫goback的時(shí)候很少會(huì)有人點(diǎn)進(jìn)去看一下goback的返回值杈笔。進(jìn)去后發(fā)現(xiàn)goback返回值為 WKNavigation , 所以這里我們嘗試打印出這個(gè)WKNavigation蒙具,看下這個(gè)WKNavigation值是什么。下面是打印出來(lái)的:

21525853471_.pic_hd.jpg

走到這一步我們可以清楚看到走到興業(yè)銀行頁(yè)面返回時(shí)持钉,Navigation 為nil了每强。所以我們大致就定位到問題是在Navigation上面州刽,因?yàn)镹avigation為nil,所以導(dǎo)致goback執(zhí)行無(wú)效穗椅。
4.解決問題
問題已經(jīng)找到了,那么我們應(yīng)該如何讓他返回到我們指定的頁(yè)面呢门坷? 這時(shí)候我們還是需要去找第二個(gè)問題里面我們發(fā)現(xiàn)的歷史列表桑孩。 WKBackForwardList; 這個(gè)文件中我們可以進(jìn)去看下,如圖:


這里我們可以看到里面有函數(shù)是 itemAtIndex 宣虾,這個(gè)函數(shù)是可以獲取到我們要跳轉(zhuǎn)到的頁(yè)面。我們看下他注釋的意思 可以知道 0 為當(dāng)前項(xiàng)绣硝,1為下一項(xiàng) -1為上一項(xiàng)。那么看到這里我們就可以試著去做嘗試了首先我們拿到nav握玛。這里我們要使用while來(lái)循環(huán)這個(gè)變量甫菠。然后調(diào)用指定返回的函數(shù)。代碼如下:

WKBackForwardListItem *item1 = [self.webView.backForwardList itemAtIndex:-1];
 navigation = [self.webView goToBackForwardListItem:item1];

這里我們運(yùn)行就可以看到效果可以返回了拂苹。但是我們要實(shí)現(xiàn)永遠(yuǎn)返回到上一頁(yè)如何去做呢痰洒。這里我們可以聲明一個(gè)變量,在while循環(huán)時(shí)給他進(jìn)行++脯宿,然后通過這個(gè)變量我們尋找我們需要返回到的item嗅绰。然后指定去返回。整體代碼如下

WKNavigation *navigation = [self.webView goBack];
    NSInteger offset = 1;
    while (!navigation)
    {
        offset++;
        if (self.webView.backForwardList.backList.count >= offset)
        {
            WKBackForwardListItem *item1 = [self.webView.backForwardList itemAtIndex:-offset];
            navigation = [self.webView goToBackForwardListItem:item1];
        }
        else
        {
            break;
        }
    }

到這一步就已經(jīng)完美的解決goback執(zhí)行無(wú)效的bug了窘面。這個(gè)bug產(chǎn)生在網(wǎng)上查詢了下财边,可能是因?yàn)槲覀兛吹降奶D(zhuǎn)点骑,但是內(nèi)部js并未進(jìn)行改變黑滴,所以產(chǎn)生了這個(gè)bug。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末菜谣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子媳危,更是在濱河造成了極大的恐慌冈敛,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件暮蹂,死亡現(xiàn)場(chǎng)離奇詭異癌压,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)我纪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門丐吓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人术健,你說(shuō)我怎么就攤上這事荞估≈尚拢” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵飞醉,是天一觀的道長(zhǎng)缅帘。 經(jīng)常有香客問我难衰,道長(zhǎng),這世上最難降的妖魔是什么失暂? 我笑而不...
    開封第一講書人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任彼宠,我火速辦了婚禮,結(jié)果婚禮上趣席,老公的妹妹穿的比我還像新娘兵志。我一直安慰自己醇蝴,他們只是感情好宣肚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著悠栓,像睡著了一般霉涨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上惭适,一...
    開封第一講書人閱讀 51,631評(píng)論 1 305
  • 那天笙瑟,我揣著相機(jī)與錄音,去河邊找鬼癞志。 笑死往枷,一個(gè)胖子當(dāng)著我的面吹牛错洁,可吹牛的內(nèi)容都是我干的屯碴。 我是一名探鬼主播导而,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼虚缎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起铲掐,我...
    開封第一講書人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤摆霉,失蹤者是張志新(化名)和其女友劉穎搭盾,沒想到半個(gè)月后鸯隅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年徊件,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片皆疹。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖表牢,靈堂內(nèi)的尸體忽然破棺而出崔兴,到底是詐尸還是另有隱情敲茄,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站秆剪,受9級(jí)特大地震影響仅讽,放射性物質(zhì)發(fā)生泄漏洁灵。R本人自食惡果不足惜处渣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一蛛砰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荠诬,春花似錦柑贞、人聲如沸钧嘶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)台汇。三九已至,卻和暖如春牵素,著一層夾襖步出監(jiān)牢的瞬間两波,已是汗流浹背腰奋。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留测蘑,地道東北人碳胳。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像产雹,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夕土,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

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

  • 導(dǎo)語(yǔ) WKWebView 是蘋果在 WWDC 2014 上推出的新一代 webView 組件梨熙,用以替代 UIKit...
    yahoouchen閱讀 4,089評(píng)論 8 17
  • 轉(zhuǎn)載:http://www.cnblogs.com/NSong/p/6489802.html 導(dǎo)語(yǔ) WKWebVi...
    李小威閱讀 4,860評(píng)論 8 9
  • iOS 的 Cookie 存取 https://juejin.im/entry/58d4c4cc44d904006...
    Farmers閱讀 5,930評(píng)論 0 16
  • WKWebView 是蘋果在 WWDC 2014 上推出的新一代 webView 組件,用以替代 UIKit 中笨...
    Aiana閱讀 4,589評(píng)論 1 8
  • 我以為我喜歡冬 為它那份禿涼 亦為它的憂傷雪 可是 春天時(shí) 漫步于排排樹下 風(fēng)來(lái) 葉飛舞 凋落于綠葉之中 竟是比那...
    安寧果閱讀 230評(píng)論 0 1