uiscrollview- (bounces = no)는 무시하는 것 같습니다 (pagingenabled = 예)
-
22-07-2019 - |
문제
페이징이있는 uiscrollview가 있습니다 (따라서 UipageControl과 페이지 사이에 왼쪽과 오른쪽을 드래그/튕기는 일반적인 모델). 이상한 점은 튀는 것을 없애고 싶을 때 (왼쪽과 오른쪽에서 UI 뒤에 검은 색을 볼 수 없다는 것) 갑자기 더 이상 페이징이 작동하지 않는다는 것입니다.
다시 말해, 언제 :
scrollView.pagingEnabled = YES;
scrollView.bounces = YES;
페이지 (0)과 페이지 (길이 -1)에서 튀는 것을 좋아하지 않는 것을 제외하고는 모든 것이 잘 작동합니다. 그러나 내가 이것을 할 때 :
scrollView.pagingEnabled = YES;
scrollView.bounces = NO;
각 페이지에서 제자리에 끼워지는 대신 모든 페이지를 하나의 긴 페이지로 처리합니다. 그래서 어떤 이유로 페이징은 튀는 것에 의존하는 것 같습니다. 어떻게 든 튀는 것을 막을 수있는 한 괜찮습니다. 그렇다면 그것을 제거하는 또 다른 방법이 있습니까? 아니면 내가 잘못하고있는 일이 있습니까?
편집하다:해결책:
@interface PagingScrollView : UIScrollView
@end
@implementation PagingScrollView
- (id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
self.pagingEnabled = YES;
self.bounces = YES;
}
return self;
}
- (void)setContentOffset:(CGPoint)offset
{
CGRect frame = [self frame];
CGSize contentSize = [self contentSize];
CGPoint contentOffset = [self contentOffset];
// Clamp the offset.
if (offset.x <= 0)
offset.x = 0;
else if (offset.x > contentSize.width - frame.size.width)
offset.x = contentSize.width - frame.size.width;
if (offset.y <= 0)
offset.y = 0;
else if (offset.y > contentSize.height - frame.size.height)
offset.y = contentSize.height - frame.size.height;
// Update only if necessary
if (offset.x != contentOffset.x || offset.y != contentOffset.y)
{
[super setContentOffset:offset];
}
}
@end
해결책
가장 좋은 방법은 글을 쓰는 것입니다 UIScrollView
서브 클래스 및 원하는 동작을 수동으로 구현하십시오. 당신은 시작할 수 있어야합니다 pagingEnabled
그리고 bounces
둘 다 설정합니다 YES
그런 다음 덮어 씁니다 -setContentOffset:
가장자리를 클립하는 자신의 방법으로.
제휴하지 않습니다 StackOverflow