2013-08-07 50 views
7

所以我有UITableViewController的標準子類與表視圖。現在我已經設置內容插入到當使用UIRefreshControl並設置contentInset時跳轉的表視圖內容

self.tableView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0); 

我也使用UIRefreshControl在標準方式。

self.refreshControl = [[CTRefreshControl alloc] init]; 
[self.refreshControl addTarget:self action:@selector(loadData:) forControlEvents:UIControlEventValueChanged]; 

一切工作正常,順利,如果表視圖包含它滾動足夠的數據(所以內容大小高度比表視圖的高度等等)。當表中沒有足夠的數據時(例如只有2行),當我開始下拉時,它會順利進行,然後突然跳下大約20點。當我滾動其他方向時也會出現同樣的情況當沒有刷新控制或者我沒有更改contentInset時,它不會發生。有任何想法嗎?所有在iOS 6

+0

將contentInset的更改放置在持續時間爲0.2秒的動畫塊中。 – Fogmeister

+0

爲什麼要更改表視圖的內容插入?在不改變內容插入的情況下,可能有更好的方法。 – Fogmeister

+4

是的,我也有同樣的問題。這顯然是iOS中的一個錯誤。我已將它提交給蘋果公司,並已承認。 – Accatyyc

回答

1

你需要把contentInset的變化在這樣一個動畫塊...

[UIView animateWithDuration:0.2 
         delay:0.0 
        options:UIViewAnimationOptionCurveEaseInOut 
       animations:^{ 
        self.tableView.contentInset = UIEdgeInsetsMake(40, 0, 0, 0); 
       } 
       completion:nil]; 

(從內存類型化,所以你可能需要檢查代碼完成)。

這應該解決您的問題。

+0

我在viewDidLoad中設置contentInset,因爲內容應該總是保持低40個點(除非您滾動),所以這沒有任何影響。 – Michal

+0

在界面生成器中設置內容而不是viewDidLoad應該看到應用的內容插入和UITableViewController將它合併到偏移量中。 –

相關問題