UIScrollView
페이징이 활성화 된 A 는 프레임 너비 (또는 높이)의 배수에서 중지됩니다. 따라서 첫 번째 단계는 페이지의 너비를 파악하는 것입니다. 그 너비를 UIScrollView
. 그런 다음 서브 뷰의 크기를 원하는만큼 크게 설정하고 UIScrollView
의 폭의 배수를 기반으로 중앙을 설정하십시오 .
그런 다음, 사용자가 설정 물론 다른 페이지,보고 싶은 이후 clipsToBounds
에 NO
mhjoy이 명시된 바와 같이합니다. 트릭 부분은 사용자가 UIScrollView
의 프레임 범위 밖에서 드래그를 시작할 때 스크롤하도록하는 것 입니다. 내 솔루션 (최근에이 작업을 수행해야했을 때)은 다음과 같습니다.
크리에이트 UIView
서브 클래스 (즉 ClipView
포함) UIScrollView
과의 파단. 본질적으로, 그것은 당신이 UIScrollView
정상적인 상황에서 가질 것이라고 가정하는 틀을 가져야합니다 . 장소 UIScrollView
의 중심에 ClipView
. 너비가 부모보기의 너비보다 작 으면 ClipView
의 clipsToBounds
가로 설정되어 있는지 확인하십시오 YES
. 또한에 ClipView
대한 참조가 필요합니다 UIScrollView
.
마지막 단계는 무시하는 것입니다 - (UIView *)hitTest:withEvent:
내부 ClipView
.
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return [self pointInside:point withEvent:event] ? scrollView : nil;
}
이것은 기본적으로 터치 영역을 UIScrollView
부모 뷰의 프레임 으로 확장 합니다. 정확히 필요한 것입니다.
또 다른 옵션은 메서드 를 하위 클래스 화 UIScrollView
하고 재정의하는 - (BOOL)pointInside:(CGPoint) point withEvent:(UIEvent *) event
것이지만 클리핑을 수행하려면 컨테이너 뷰가 여전히 필요하며 의 프레임 YES
만을 기준 으로 반환 할시 기를 결정하기 어려울 수 있습니다 UIScrollView
.
참고 : 하위보기 사용자 상호 작용에 문제가있는 경우 Juri Pakaste의 hitTest : withEvent : 수정 도 살펴 봐야 합니다.