UIScrollView теряет эффект «отказов» без какой-либо причины - PullRequest
0 голосов
/ 27 февраля 2012

Я создал приложение для 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;
            }
         }
         ];
    }
}

Надеюсь, это поможет.Спасибо.

1 Ответ

0 голосов
/ 27 февраля 2012

Если бы мне пришлось делать ставку, это было бы при увеличении вашего прокрутки, а не сброса аффинного преобразования обратно к идентичности. Я не эксперт в таких вещах, но вот куда я бы посмотрел.

Если ваше прокручиваемое изображение вообще не масштабируется, то я бы порекомендовал записывать значения scrollview.bounces, .bouncesZoom, .alwaysBounceVertical и .alwaysBounceHor Horizontal по таймеру с начала вашего приложения и посмотреть, изменяет ли что-либо значения во время запуска вашей ошибки. Конечно, вы хотите, чтобы все были ДА все время.

Удачи,

Дэмиен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...