Я создал приложение для iPad, которое позволяет вам перемещаться по некоторым презентациям ... Есть два вида: список презентаций и вид, который показывает вам презентацию.Когда пользователь выбирает презентацию (в PresentationListController), я показываю презентацию в другом представлении (PresentationViewController).PresentationViewController содержит UIScrollView со списком страниц ... проблема в том, что через некоторое время, без повторяющегося события, которое вызывает эту проблему, UIScrollView "теряет" способность отскочить ... поэтому прокрутка происходит не плавно, и этокак прокрутка жесткого вида без этого причудливого эффекта отскока ... Пользователь все еще может прокручивать, но эффект очень уродлив.Проблема в том, что проблема остается, даже если я вернусь к PresentationListController и выберу новый PresentationViewController ... новая презентация, которая показана, имеет эту проблему.Я думал, что это связано с тем, что навигационный контроллер сохранял UIView в памяти и использовал его всякий раз, когда я открывал новую презентацию, но это не так, потому что я отлаживал и видел, что когда я меняю презентацию, вызывается метод deallocPresentationViewController.
Итак, как мне решить эту проблему?
EDIT
Я нашел, как воспроизвести это:Я делаю анимацию, чтобы открыть список страниц, и анимацию, чтобы закрыть его.Когда я открываю презентацию, которая содержит много страниц (так что contentSize для UIScrollView> ширина 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;
}
}];
}
}
Вот метод Iиспользуйте, чтобы скрыть список страниц (и другие виды)
- (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;
}
}
];
}
}
Надеюсь, это поможет.Спасибо.