많은 하위 뷰를 표시하기 위해 UIScrollView를 사용하고 있습니다.UIScrollView에서 pagingEnabled를 YES로 설정하는 이유는 하위 뷰를 터치 할 때 자동으로 이전 페이지로 스크롤됩니까?
ScrollView = [[UIScrollView alloc]initWithFrame:CGRectZero];
ScrollView.delegate = self;
ScrollView.showsHorizontalScrollIndicator = NO;
ScrollView.showsVerticalScrollIndicator = NO;
ScrollView.clipsToBounds = YES;
ScrollView.scrollEnabled = YES;
ScrollView.pagingEnabled = YES;
CGFloat widthOfScroll= (maxTotalColumnsVisibleAtAnyPoint * widthOfSubView);
ScrollView.frame = CGRectMake(0, 0, widthOfScroll, heightOfSubView);
CGSize contentSizeHeaderView = self.ScrollView.frame.size;
CGFloat contentSizeWidth = self.totalSubViews * self.widthOfSubView;
contentSizeHeaderView.width = contentSizeWidth;
[ScrollView setContentSize:contentSizeHeaderView];
있는 ScrollView하고있는 ScrollView에 대한 이벤트 처리기에 컨트롤을 추가하는 코드는 다음과 같습니다 :
-(void)loadControlsInScroll{
UIView *tempSubView = nil;
CGFloat tempOriginX = 0;
@autoreleasepool {
for (int i = 0; i < self.totalSubViews; i++) {
tempSubView = [dataSource viewForScroll:i];
tempSubView.layer.borderColor = borderColor.CGColor;
tempSubView.layer.borderWidth = kBorderWidth;
tempSubView.frame = CGRectMake(tempOriginX, 0, widthOfSubView, heightOfSubView);
tempOriginX = tempOriginX + widthOfSubView;
[self.ScrollView addSubview:tempSubView];
}
}
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
///Event handler
}
것은 나는이 스크롤 뷰에 페이징을 사용하도록 설정 한 : 다음 스크롤 뷰를 생성하는 코드입니다.
max scrollView에서 프레임에 8 개의 하위보기를 저장할 수 있다고 가정 해 보겠습니다.
CASE 1
16 파단이있는 ScrollView에 첨가된다. 이제 두 페이지가 표시됩니다. 두 페이지 모두를 올바르게 스크롤하고 있습니다. 두 페이지의 하위보기를 만지면 잘못된 동작이 발생하지 않습니다.
CASE 2
9 파단 스크롤 뷰에 추가된다. 지금은 또한 그것은 견인차입니다. 첫 번째 페이지에는 1 ~ 8 번째 하위보기가 포함됩니다. 2 페이지에는 2 ~ 9 번째 하위보기가 있습니다. 1 페이지의 하위보기를 만지면 정상적으로 작동합니다. 2 페이지에서 언급하면 UIScrollView의 이벤트 핸들러 scrollViewDidScroll이 호출됩니다.
추가 정보 :
- PagingEnabled가 NO로 설정되어있는 경우이 발생하지 않습니다.
수동으로 스크롤을하지 않아도이 scrollViewDidScroll 이벤트가 호출되는 이유는 무엇입니까? 이 시간에 이벤트 핸들러 scrollViewWillBeginDragging도 호출됩니까?
UPDATE 1 :
진짜 문제는 PagingEnabled가 YES이면,있는 ScrollView의 대리인 설정되지 않거나 다음 여부, 케이스 (2)에있어서, 스크롤 뷰 자동 이전 페이지로 스크롤한다는 것이다.
업데이트 된 항목 – Krishnan