2012-06-20 6 views
5

У меня есть два UIScrollViews, один горизонтальный, один по вертикали, обе страницы, каждая (как и горизонтальная, шириной в два листа, а вертикальная - на две страницы). Горизонтальное прокрутка находится в вертикальном. Я пытаюсь подражать проекту Calcbot, где вы можете прокручивать влево/вправо кнопки и вверх/вниз для истории.UIScrollView прыгает вниз при первом касании

Однако, когда изображение загружается, горизонтальное представление прокрутки примерно на 100 пикселей выше, чем должно быть. Затем, когда я прикасаюсь к нему и начинаю немного перемещать его, он прыгает/переходит в правильное положение и остается там. Как я могу правильно его видеть с самого начала?

Вот мой код viewDidLoad:

-(void)viewDidLoad { 
horizontalScrollView.pagingEnabled = YES; 
verticalScrollView.pagingEnabled = YES; 


horizontalScrollView.contentSize = CGSizeMake(horizontalScrollView.bounds.size.width * 2, horizontalScrollView.bounds.size.height); // 2 pages wide. 
verticalScrollView.contentSize = CGSizeMake(verticalScrollView.bounds.size.width, verticalScrollView.bounds.size.height * 2); 


horizontalScrollView.delegate = self; 
verticalScrollView.delegate = self; 




[verticalScrollView addSubview:horizontalScrollView]; 

[verticalScrollView setContentOffset:CGPointMake(0, 640)]; 

[self.view addSubview:verticalScrollView]; 

horizontalScrollView.frame = CGRectMake(0, 540, 320, 460); 

} 

Спасибо.

ответ

4

Прыжки в UIScrollView обычно происходит, когда вы установили pagingEnabled = YES и contentOffset устанавливается в положение, которое а не на границе страницы (делятся на bounds.size.height).

+0

Я только что изменил contentOffset до 380, и он сработал. Благодарю. –

+1

В немного другом сценарии, это также зафиксировало мою проблему с прыжками. У меня был только UIScrollView с вертикальной ориентацией с pagingEnabled из некоторых тестов, которые я делал ранее. Всякий раз, когда я прокручивался вниз, а затем постучал в любом месте, он прыгал бы обратно. Отключил его, и все было хорошо. – patridge

+0

Привет @patridge Не могли бы вы объяснить свой комментарий ... У меня такая же проблема. – Mystery

0

Просто быстрая мысль, потому что я в настоящее время возился с UIScrollView. Вы можете попробовать использовать -(void)viewWillAppear:(BOOL)animated. Например. Я установил свою минимальную и максимальную прокрутку в этом методе, потому что это зависит от размера содержимого, которое из того, что я прочитал, не установлено до viewWillAppear.

+0

Спасибо, но я просто попробовал это, и он ничего не меняет. –

0

Перемещение этой линии

horizontalScrollView.frame = CGRectMake(0, 540, 320, 460); 

В viewWillAppear вместо viewDidLoad, увидеть, если он работает

+0

К сожалению, он по-прежнему кажется выше, чем должен быть. Спасибо за предложение. –

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