UIScrollView에서 세로 스크롤 비활성화
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;
iOS 11에서 안전 영역이 아닌 화면 경계에 고정되는 스크롤 뷰를 만드는 데 관심이 있다면 다음을 추가하는 것을 잊지 마십시오. :
if (@available(iOS 11.0, *)) {
[self.scrollView setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
}
Just set the y to be always on top. Need to conform with UIScrollViewDelegate
func scrollViewDidScroll(scrollView: UIScrollView) {
scrollView.contentOffset.y = 0.0
}
This will keep the Deceleration / Acceleration effect of the scrolling.
참고URL : https://stackoverflow.com/questions/5095713/disabling-vertical-scrolling-in-uiscrollview
'Programing' 카테고리의 다른 글
Jersey : 실제 요청 인쇄 (0) | 2020.09.21 |
---|---|
일반 배열을 만드는 방법은 무엇입니까? (0) | 2020.09.21 |
Python이 C ++보다 빠르고 가볍습니까? (0) | 2020.09.20 |
유닉스 스크립트를 15 초마다 실행하는 방법은 무엇입니까? (0) | 2020.09.20 |
Java : 이중 값에 대한 정밀도를 설정하는 방법은 무엇입니까? (0) | 2020.09.20 |