2013-03-30 2 views
2

Этот код предназначен для Universal.UIScrollView прокручивает видимо, но NSLog показывает, что это не

У меня есть iPhone и iPad, которые почти идентичны. И они идентичны по отношению к типам объектов.

Я пытаюсь понять, почему мой контроль страницы не обновляется только на iPad. После игры с NSLog кажется, что на iPhone правильно работает метод scrollViewDidScroll. Это не на iPad. При просмотре прокрутки нет журнала.

Я также поставил NSLog, чтобы сообщить мне текущую страницу. Он делает это на iPad, но только когда я вызываю loadVisiblePages по моему методу viewDidLoad, а не при прокрутке прокрутки.

Прошу игнорировать разделы, где я жестко закодировал первую и последнюю страницы, так как это обычно делается программно, но из-за этой небольшой ошибки мне пришлось загружать все страницы в память.

- (void)loadVisiblePages { 
    // First, determine which page is currently visible 
    CGFloat pageWidth = self.scrollView.frame.size.width; 
    NSInteger page = (NSInteger)floor((self.scrollView.contentOffset.x * 2.0f + pageWidth)/(pageWidth * 2.0f)); 

    // Update the page control 
    self.pageControl.currentPage = page; 
    NSLog(@"Page number is %i", page); 

    // Work out which pages you want to load 
    NSInteger firstPage = 0; // page - 1; 
    NSInteger lastPage = 3; //page + 1; 


    // Purge anything before the first page 
    for (NSInteger i=0; i<firstPage; i++) { 
     [self purgePage:i]; 
    } 

    // Load pages in our range 
    for (NSInteger i=firstPage; i<=lastPage; i++) { 
     [self loadPage:i]; 
    } 

    // Purge anything after the last page 
    for (NSInteger i=lastPage+1; i<self.pageImages.count; i++) { 
     [self purgePage:i]; 
    } 

} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView { 
    // Load the pages that are now on screen 
    [self loadVisiblePages]; 
    NSLog(@"Scroll View Did Scroll"); 
} 
+3

Я бы предположил, что вы забыли связать свойство делегата scrollview в iPad 'xib' с тем же объектом, к которому вы подключили его в iPhone' xib'. – NJones

+0

Посмотрите на размер содержимого прокрутки, если он меньше размера фрейма представления ipad, прокрутка прокрутки прокрутки (поскольку весь контент уже виден на экране), и поэтому scrollViewDidScroll никогда не будет вызван. дайте мне знать, если вы все еще сталкиваетесь с этой проблемой .. надеюсь, что это поможет .. – Kunal

ответ

2

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

+2

Стопроцентный правильный сэр! Никакой делегат не установлен в UIViewController! Спасибо. – Macness

Смежные вопросы