У меня есть UIScrollView
, чтобы отобразить более длинный список текстовых просмотров, полей и изображений. В viewDidAppear
я правильно установил contentSize, и я также добавлю этот код в didRotateFromInterfaceOrientation
, так что размер содержимого контента UIScrollView
изменяется в зависимости от ориентации.UIScrollView не работает, когда просмотр начинается, но работает после вращения
Проблема в том, что когда сначала появляется представление, UIScrollView
не отвечает (я не могу прокручивать), но после поворота устройства вызывается код в didRotateFromInterfaceOrientation
и все работает отлично. (Если я запустил приложение в альбомной ориентации, я могу немного прокрутить, чтобы увидеть, что обычно отображается в портретном режиме, а не расширенное содержимое - игнорирует определенный мной scrollView)
Код тот же в viewDidAppear
и didRotateFromInterfaceOrientation
, так почему же scrollView
реагировать только после вращения? Любая помощь оценивается.
Вывод сообщений NSLog
в обоих методах одинаковый.
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
- (void) viewDidAppear:(BOOL)animated{
//If not an iPad set the scrollview to allow scrolling of view
if (!([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)) {
self.scrollView.contentSize= CGSizeMake(self.view.frame.size.width,1000);
[self.scrollView setUserInteractionEnabled:YES];
}
if(self.scrollView.userInteractionEnabled){
NSLog(@"DEBUG scrollview height : %f",self.scrollView.contentSize.height);
NSLog(@"DEBUG scrollview width : %f",self.scrollView.contentSize.width);
}
}
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
//If not an iPad set the scrollview
if (!([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)) {
self.scrollView.contentSize= CGSizeMake(self.view.frame.size.width,1000);
}
if(self.scrollView.userInteractionEnabled){
NSLog(@"DEBUG scrollview height : %f",self.scrollView.contentSize.height);
NSLog(@"DEBUG scrollview width : %f",self.scrollView.contentSize.width);
}
}
Вы забыли называть '[super ...]' методы! – Cyrille
И вам лучше изменить 'contentSize' в' viewDidLayoutSubviews', который вызывается при появлении * и * при изменении ориентации. – Cyrille
Спасибо - viewDidLayoutSubviews решила проблему. – greentor