IB에는 scrollview에서 수직 스크롤을 선택 취소하는 옵션이 있지만 작동하지 않는 것 같습니다.
IB가 아닌 코드에서 가로로만 스크롤하지 않고 세로로만 스크롤하도록 scrollview를 설정하는 방법은 무엇입니까?
답변
contentSize의 높이를 scrollView의 높이로 설정하십시오. 그런 다음 수직으로 스크롤 할 것이 없기 때문에 수직 스크롤을 비활성화해야합니다.
scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,scrollView.frame.size.height);
답변
iOS7 이후 :
첫째 : 콘텐츠 크기 너비는 스크롤 뷰의 너비와 같아야합니다.
두 번째 : initWithNibName :
self.automaticallyAdjustsScrollViewInsets = NO;
그게 다야.
답변
예, pt2ph8의 대답이 맞습니다.
하지만 이상한 이유로 contentSize가 UIScrollView보다 높아야하는 경우 UIScrollView 프로토콜 메서드를 구현하는 세로 스크롤을 비활성화 할 수 있습니다.
-(void)scrollViewDidScroll:(UIScrollView *)aScrollView;
UIViewController에 이것을 추가하십시오.
float oldY; // here or better in .h interface
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
[aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, oldY)];
// or if you are sure you wanna it always on top:
// [aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x, 0)];
}
사용자가 UIScrollView를 스크롤 할 때 호출되는 메서드 일 뿐이며 이렇게하면 콘텐츠가 항상 동일한 .y를 갖도록 강제합니다.
답변
다음 방법 포함
-(void)viewDidLayoutSubviews{
self.automaticallyAdjustsScrollViewInsets = NO;
}
스크롤 뷰의 콘텐츠 크기 너비를 스크롤 뷰의 너비와 동일하게 설정합니다.
답변
원하는 방향으로 비활성화하려면 콘텐츠 크기에 0을 전달해야합니다.
세로 스크롤을 비활성화하려면
scrollView.contentSize = CGSizeMake(scrollView.contentSize.width,0);
가로 스크롤을 비활성화하려면
scrollView.contentSize = CGSizeMake(0,scrollView.contentSize.height);
답변
콘텐츠 크기를 업데이트하여 세로 스크롤을 비활성화했지만 스크롤 기능은 그대로 유지되었습니다. 그런 다음 스크롤을 완전히 비활성화하려면 수직 바운스도 비활성화해야한다는 것을 알았습니다.
이 문제를 가진 사람들도있을 것입니다.
답변
- (void)scrollViewDidScroll:(UIScrollView *)aScrollView
{
[aScrollView setContentOffset: CGPointMake(aScrollView.contentOffset.x,0)];
}
당신은 확인해야합니다 UIScrollViewDelegate
aScrollView.delegate = self;