我的代碼我的坑(十八) —— 關(guān)于UITableView分頁(yè)數(shù)據(jù)滾動(dòng)到頂部異常的問(wèn)題(一)

版本記錄

版本號(hào) 時(shí)間
V1.0 2022.07.25 星期一

前言

做了好幾個(gè)APP,碰到了大大小小的很多坑,以前碰到坑,解決了就結(jié)束了,這里想把自己碰到的坑記錄下來(lái),一來(lái)給自己備查二來(lái)希望可以幫助到大家。感興趣的可以關(guān)注下,也歡迎大家補(bǔ)充留言,感興趣的看上面幾篇文章。
1. 我的代碼我的坑(一) —— 自簽名證書(shū)導(dǎo)致請(qǐng)求取消的問(wèn)題(一)
2. 我的代碼我的坑(二) —— UIImageView動(dòng)畫(huà)點(diǎn)擊后動(dòng)畫(huà)和圖片消失的問(wèn)題(一)
3. 我的代碼我的坑(三) —— iOS9系統(tǒng)WKWebView加載頁(yè)面白板的問(wèn)題(一)
4. 我的代碼我的坑(四) —— iOS12系統(tǒng)自定義漸變色UISwitch手機(jī)橫屏的異常問(wèn)題(一)
5. 我的代碼我的坑(五) —— 不可編輯狀態(tài)的UITextView文本高度大于視圖高度默認(rèn)滾動(dòng)到底部的問(wèn)題(一)
6. 我的代碼我的坑(六) —— UITextField輸入長(zhǎng)度自動(dòng)截取時(shí)漢字和拼音帶來(lái)的末位截取不能正常輸入漢字的問(wèn)題(一)
7. 我的代碼我的坑(七) —— UIImageView做序列幀動(dòng)畫(huà)結(jié)束后沒(méi)有回調(diào)并且“隱藏”(一)
8. 我的代碼我的坑(八) —— iOS 13.1.2 Debug調(diào)試模式系統(tǒng)layoutSubviews中修改frame循環(huán)調(diào)用導(dǎo)致的崩潰(一)
9. 我的代碼我的坑(九) —— 系統(tǒng)鍵盤(pán)拼音全鍵無(wú)法正常聯(lián)想以及輸入漢字高亮區(qū)識(shí)別不計(jì)入長(zhǎng)度計(jì)數(shù)的問(wèn)題(一)
10. 我的代碼我的坑(十) —— iOS9 Xib實(shí)例化的UITableViewCell中UIButton和UISwitch等控件的IBAction點(diǎn)擊無(wú)響應(yīng)的問(wèn)題(一)
11. 我的代碼我的坑(十一) —— macOS Mojave 和 xcode 11.1 (11A1027)環(huán)境下運(yùn)行iphonex以上流海屏xcode install時(shí)xocde崩潰閃退的問(wèn)題(一)
12. 我的代碼我的坑(十二) —— iOS10字體DIN Condense Bold字體顯示不全頂部被切割的問(wèn)題(一)
13. 我的代碼我的坑(十三) —— 狀態(tài)欄高度的動(dòng)態(tài)計(jì)算(一)
14. 我的代碼我的坑(十四) —— Xcode 12.5中React編譯不過(guò)的問(wèn)題(一)
15. 我的代碼我的坑(十五) —— dispatch_once導(dǎo)致的死鎖的問(wèn)題(一)
16. 我的代碼我的坑(十六) —— 關(guān)于無(wú)法驗(yàn)證包完整性的問(wèn)題(一)
17. 我的代碼我的坑(十七) —— 關(guān)于UniversalLink校驗(yàn)不通過(guò)的問(wèn)題(一)

問(wèn)題描述

在做產(chǎn)品的需求的時(shí)候,需要用到分頁(yè)加載的場(chǎng)景,在請(qǐng)求分頁(yè)數(shù)據(jù)以后,需要重新刷新UITableView將分頁(yè)數(shù)據(jù)顯示出來(lái)。

但是產(chǎn)品提出來(lái)一個(gè)需求,就是雙擊導(dǎo)航讓列表滾動(dòng)到頂部。這個(gè)時(shí)候問(wèn)題就出現(xiàn)了,只要是在分頁(yè)的情況下,設(shè)置滾動(dòng)到頂部,UITableView就沒(méi)辦法滾動(dòng)到頂部,就一點(diǎn)點(diǎn)往上。需要雙擊很多次才可以最終完全滾動(dòng)到頂部。

不管是設(shè)置contentOffset還是scrollToRect都不管用。我使用的是下面的方法:

[self.tableView setContentOffset:CGPointZero animated:YES];

問(wèn)題解決

線上找了很多方法,最終找到了原因和解決辦法。

原因:當(dāng)tableViewCell數(shù)量改變后再次reloadcontentOffset的值是通過(guò)預(yù)估各cell的高度及header、footer的高度后計(jì)算得到的,并非準(zhǔn)確的值。知道原理后,解決辦法也就簡(jiǎn)單了,關(guān)閉系統(tǒng)自帶的預(yù)估就好了。estimatedRowHeight是一個(gè)預(yù)估高度,iOS11之前是為0,在iOS11下,這個(gè)值默認(rèn)為44。

落實(shí)到代碼上就如下所示:

_tableView.estimatedRowHeight = 0;
_tableView.estimatedSectionHeaderHeight = 0;
_tableView.estimatedSectionFooterHeight = 0;

參考文章

后記

本篇主要講述了關(guān)于UITableView分頁(yè)滾動(dòng)到頂部異常的問(wèn)題,感興趣的給個(gè)贊或者關(guān)注~~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容