我爲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;
}
}
];
}
}
希望它有幫助。謝謝。
我看着在我的代碼的屬性。沒有任何這些屬性的參考(我用CMD + F找到..沒有結果)。 – 2012-02-27 16:45:18
你可能沒有引用它們,但是如果它們改變了,那可能是一個問題。放大怎麼樣 - 你放大了嗎? – 2012-02-27 16:46:55
問題是,當我更改演示文稿時,爲什麼問題仍然存在?該視圖應該被卸載並重新創建。 – 2012-02-27 16:51:48