스크롤하지 않는 UIScrollView가 있습니다. 수신 거부 기능을 사용하도록 설정하면보기가 아닌 콘텐츠가있는 것을 확인하기 위해 측면까지 충분히 스크롤 할 수 있지만 놓을 때 원본으로 바로 돌아갑니다. 페이징이 켜져 있지만 페이징을 해제하면 동일한 동작이 발생합니다. 자동 레이아웃이 해제되어 있습니다. IB에서 scrollView는 MainViewController에 있으며, 아래와 같이 IBOutlet과 올바르게 연결됩니다.UIScrollView 스크롤하지 않습니다.
@interface MainViewController()
@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;
@end
@implementation MainViewController
- (void)viewDidLoad
{
[super viewDidLoad];
for (int i = 0; i < 3; i++) {
CGRect frame;
frame.origin.x = self.scrollView.frame.size.width * i;
frame.origin.y = 0;
frame.size = self.scrollView.frame.size;
// I might be doing this wrong, but it returns a PosterView object just like I want it to.
NSArray *view = [[NSBundle mainBundle] loadNibNamed:@"posterView" owner:self options:nil];
[[view objectAtIndex:0] setFrame:frame];
[self.scrollView addSubview:[view objectAtIndex:0]];
}
self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 3, self.scrollView.frame.size.height);
}
이 방법을 사용하면 제대로 스크롤됩니다.
-(void)scrollToPage:(NSInteger)page{
float pageWidth = [self.scrollView frame].size.width;
[self.scrollView setContentOffset:CGPointMake(page*pageWidth,0) animated:YES];
}
나는 UIScrollViewDelegate
및 최우선 scrollViewDidScroll
을 구현하는 시도하지만,이 호출되지 않습니다 (내가 앞서 언급 한 것처럼, 수신 거부 가능하지 않는 한).
contentSize.width는 960이고 프레임은 분명히 320이므로 문제가되지 않아야합니다. 스크롤링이 IB에서 활성화되도록 설정되었으며 코드에서 시도했지만 성공하지 못했습니다! –
제공하신 코드가 정상적으로 보입니다. 전체 콘텐츠 크기는 3 * 320,480으로 유지됩니까? 아니면 어떻게 든 다시 설정하십시오 – Zen
맞아요, 그것은 viewDidLoad 후 재설정합니까! 처음으로 스크롤하려고 할 때 contentSize를 설정하면 이제 작동합니다! 고맙습니다. –