2012-08-11 76 views
4

我正在使用包含幾個文本字段的滾動視圖。當文本字段「開始編輯」,我執行3個操作:UIScrollView setContentOffset:animated:奇怪的行爲

  1. 我改變滾動視圖內容插入(使整個視圖鍵盤上方變得明顯)。我只是這樣做,如果它不是已經固定到這個內容插圖。

  2. 我也改變滾動指示器插圖來匹配一個在1

  3. 最後,我改變滾動視圖內容偏移到一些特定的值。

然而,一件奇怪的事情發生。一旦我點擊文本字段,滾動視圖動畫到大於特定值的內容偏移量,然後立即回到該特定值。

我懷疑步驟1和2都是原因,所以我排除了它們,一切正常。但是,這使我隱藏在鍵盤下方的部分滾動視圖。

編輯:這裏是我使用的代碼(當文本字段開始編輯的稱呼):

 UIScrollView *scrollView = (UIScrollView *) self.view; 

     if (scrollView.contentInset.bottom != C_SCROLL_VIEW_CONTENT_INSET_BOTTOM) { 
      [scrollView setContentInset:UIEdgeInsetsMake(C_ORIGIN_ZERO, 
                 C_ORIGIN_ZERO, 
                 C_SCROLL_VIEW_CONTENT_INSET_BOTTOM, 
                 C_ORIGIN_ZERO)]; 
      [scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(C_ORIGIN_ZERO, 
                    C_ORIGIN_ZERO, 
                    C_SCROLL_VIEW_CONTENT_INSET_BOTTOM, 
                    C_ORIGIN_ZERO)]; 
     } 

     if (textField.tag == C_TAG_BUTTON) { 
      [scrollView setContentOffset:CGPointMake(C_ORIGIN_ZERO, C_ORIGIN_SHIFT_SCROLL_VIEW_FOR_CURRENT_Y) 
           animated:YES]; 
      return; 
     } 
+0

請將違規代碼傳送給我們。 – James 2012-08-11 05:06:07

+0

你把你的UIView更改爲scrollView嗎?或者你已經分配了它並嘗試通過這一行來訪問它:'UIScrollView * scrollView =(UIScrollView *)self.view;' – 2012-08-11 06:08:11

+0

我的UIView實際上是一個滾動視圖。這就是爲什麼我添加了這一行。 – 2012-08-11 08:10:19

回答

0

假設C_SCROLL_VIEW_CONTENT_INSET_BOTTOM是你不變,我認爲值是錯誤的(過大)。