2012-02-27 100 views
0

我爲iPad創建了一個應用程序,它可以讓您通過一些演示文稿導航...有兩種視圖:演示文稿列表和向您顯示演示文稿的視圖。 當用戶選擇一個演示文稿(在PresentationListController中)時,我在另一個視圖(PresentationViewController)中顯示演示文稿。 PresentationViewController包含一個帶有頁面列表的UIScrollView ...問題在於,在一段時間後,如果沒有導致此問題的重複事件,UIScrollView會「失去」其反彈的能力......所以滾動不平滑,這就像滾動僵硬的看法,沒有那種幻想的反彈效果......用戶仍然能夠滾動,但效果是非常醜陋。問題在於,即使我回到PresentationListController並選擇一個新的PresentationViewController ...顯示的新演示文稿,問題依然存在,但存在此問題。 我認爲這是由於導航控制器將UIView保存在內存中,並且每當我打開一個新的演示文稿時都會重複使用它,但事實並非如此,因爲我調試過並看到當我更改演示文稿時,會調用dealloc方法在PresentationViewController上。UIScrollView在沒有任何原因的情況下失去「反彈」效果

那麼,我該如何解決這個問題呢?

編輯

我發現如何重現它:我在做一個animiation打開的頁面列表,以及一個動畫將其關閉。當我打開包含大量頁面的演示文稿(以便UIScrollView的contentSize> UIScrollView的寬度)時,我沒有任何問題。但是,當我在僅有一頁的演示文稿中打開和關閉頁面列表時,問題就開始了。我寫的代碼我用來執行動畫+

這裏是我使用進行開啓和關閉的頁面列表中的動畫代碼:

- (IBAction)showPagesView:(id)sender { 
    if (pagesListVisible) { 
      [self resetNavigationControls]; 
     } else { 
      [self resetNavigationControls]; 
      scvPages.frame = CGRectMake(0, 960, 768, 0); 
      scvPages.alpha = 0.0f; 

      [btnPages setImage:[UIImage imageNamed:@"thumbON.png"] forState:UIControlStateNormal]; 

      [UIView animateWithDuration:0.7 animations:^{ 
       scvPages.frame = CGRectMake(0, 760, 768, 200); 
       scvPages.alpha = 1.0f; 
       pagesListVisible = YES; 
      } completion:^(BOOL finished) { 
       if (finished) { 
        scvPages.contentSize = scvPages_ContentSize; 
       } 
      }]; 
    } 

} 

下面是我用隱藏的方法網頁列表(和其他意見)

- (void)resetNavigationControls { 
if (pagesListVisible) { 
     [btnPages setImage:[UIImage imageNamed:@"thumb.png"] forState:UIControlStateNormal]; 
     hidePages = YES; 
     // Nascondi la lista delle pagine. 
     [UIView animateWithDuration:0.7 
         animations:^ 
     { 
      scvPages.frame = CGRectMake(0, 960, 768, 0); 
      scvPages.alpha = 0.0f; 
     } 
      completion:^(BOOL finished) 
     { 
      if (finished) { 
       scvPages.contentSize = scvPages_ContentSize; 
       pagesListVisible = NO; 
      } 
     } 
     ]; 
    } 
} 

希望它有幫助。謝謝。

回答

0

如果我必須打賭,它將在您的scrollview被縮放並且不會將仿射變換重置爲身份。我不是這方面的專家,但那是我看的地方。

如果您的滾動視圖根本沒有縮放,那麼我建議您從應用程序的開頭記錄scrollview.bounces,.bouncesZoom,.alwaysBounceVertical和.alwaysBounceHorizo​​ntal的值,並查看是否有任何更改值,同時觸發你的錯誤。當然,你希望所有人都成爲「是」。

祝你好運,

達明

+0

我看着在我的代碼的屬性。沒有任何這些屬性的參考(我用CMD + F找到..沒有結果)。 – 2012-02-27 16:45:18

+0

你可能沒有引用它們,但是如果它們改變了,那可能是一個問題。放大怎麼樣 - 你放大了嗎? – 2012-02-27 16:46:55

+0

問題是,當我更改演示文稿時,爲什麼問題仍然存在?該視圖應該被卸載並重新創建。 – 2012-02-27 16:51:48

相關問題