在iOS 6中,我在我的應用程序中使用QuickDialog
創建了UITableView
。它正常滾動。當我切換到iOS 7時,相同的UITableView
不能正確滾動。我可以拖動到底部(滾動壓縮),但是當我釋放時,它會彈回到頂部。我一直在玩viewDidAppear
來嘗試和診斷問題。請參閱下面的代碼塊。切換到iOS後UITableView不滾動7
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
NSLog(@"Content height: %f",self.quickDialogTableView.contentSize.height);
[self.quickDialogTableView reloadData];
NSLog(@"Content height: %f",self.quickDialogTableView.contentSize.height);
[self.quickDialogTableView layoutIfNeeded];
NSLog(@"Content height: %f",self.quickDialogTableView.contentSize.height);
}
該塊在IOS 7的輸出是
Content height: 0.000000
Content height: 836.000000
Content height: 0.000000
同時,在IOS 6(仿真器)這個塊的輸出被
Content height: 836.000000
Content height: 836.000000
Content height: 836.000000
另外嘗試和診斷問題,我設置了一個觸發[self.quickDialogTableView reloadData]
的按鈕。只要按下該按鈕,滾動行爲就會開始正常工作。然後,當我離開視圖並回來時,滾動再次失敗(直到按下按鈕)。爲了清楚起見,我試圖單獨將reloadData
放入viewWillAppear
(即刪除上面代碼塊中的最後兩行)並且它不糾正滾動。
我正在尋找線索,以瞭解我可能想要糾正的問題。預先感謝您的幫助。
這看起來並不像它會工作,果然,它不適合我。然而,我面臨同樣的問題,在您的解決方案中,您只需從viewDidAppear中的quickDialogTableView中獲取contentSize,然後將其重新分配給viewDidLayoutSubviews中的quickDialogTableView的contentSize ...我無法理解這將如何解決問題。 – Jamornh
@Jamornh同意。這沒有任何意義。然而,如果我在'self.quickDialogTableView.contentSize = self.trueContentSize'之前將'self.quickDialogTableView.contentSize'記錄在'-viewDidLayoutSubviews'中,結果爲零。因此,在'-viewDidAppear'和'viewDidLayoutSubviews'之間發生了什麼,它將'contentSize'設置爲零。我不知道是什麼。 對不起聽說我的黑客沒有爲你工作。您是否在使用它之前檢查確定您的自定義'self.trueContentSize'屬性是否返回了您的預期大小? –
我設法通過手動重置tableView的superview的框架和邊界,然後重新設置tableView的框架來適應它,使tableView的contentSize大於框架。顯然,滾動不起作用,因爲tableView的框架由於某種原因比contentSize大。感謝您的答覆! – Jamornh