objective-c - uikeyboarddidshownotification - xcode 키보드 올리기




UIScrollView를 사용하여 페이징에서 클릭 할 때 가로 스크롤을 비활성화하고 페이지를 변경하려면 어떻게해야합니까? (2)

UICollectionView를 페이징과 함께 사용할 수 있으며, 내부에서 수직 스크롤이 가능하도록 UIScrollView를 구현할 수 있습니다. 아래 코드를 사용하여 UICollectionView 스크롤을 비활성화하고 클릭시 색인 모음 셀을 변경하십시오.

새로운 수정 된 답변 수락 :

viewDidLayoutSubviews에 이것을 추가하십시오

빠른

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    let indexPath = IndexPath(item: 12, section: 0)
    self.collectionView.scrollToItem(at: indexPath, at: [ .centeredHorizontally], animated: true)
}

일반적으로 .CenterVertically 경우입니다.

목표 -C

-(void)viewDidLayoutSubviews {
   [super viewDidLayoutSubviews];
    NSIndexPath *indexPath = [NSIndexPath indexPathForItem:12 inSection:0];
   [self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:NO];
}

나는 pagingEnabled 와 함께 UIScrollView 를 가지고있다. UIScrollView 하위 뷰에 5 개의 UIStackView 를 추가했으며 하나의 UISegmentedControl 가졌습니다. 현재 선택한 세그먼트를 표시하고 가로 스크롤을 사용하지 않으려하지만보기가 세로로 스크롤 할 수 있습니다.

예를 들어 보겠습니다.

  • 선택한 페이지 색인 = 0
  • 사용자가 다음 페이지로 이동하기 위해 수평으로 스크롤하거나 끌 수 없습니다.
  • 사용자가 세로로 스크롤 할 수 있습니다.
  • UISegmentedControl 에서 사용자가 선택한 페이지 색인 = 1
  • 두 번째 페이지가 표시됩니다.
  • 이제 사용자가 0 또는 2 개의 색인으로 스크롤하거나 드래그 할 수 없습니다.

UIScrollView 사용하여이 기능을 어떻게 얻을 수 있습니까?

시도한 논리 :

- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];

CGFloat xOff = self.scrollView.frame.size.width * self.currentPage;
[self.scrollView setContentSize:CGSizeMake(xOff, self.scrollView.contentSize.height)];
//[self.scrollView setContentOffset:CGPointMake(xOff, 0) animated:true];

}

하지만이 UIScrollView를 사용하여 페이지를 변경 한 후 다시 스크롤하면 0 페이지로 이동합니다.


귀하의 질문에 다음과 같은 falseUIScrollView isScrollEnabled 속성을 설정하는 대답 :

목표 -C를 위해

[self.scrollView setScrollEnabled:NO];

신속한 대응

self.scrollView.isScrollEnabled = false

Apple 설명서에서이 속성에 대해 말하기를 :

스크롤링이 사용 가능한지 여부를 결정하는 부울 값입니다.

이 속성의 값이 true이면 스크롤을 사용할 수 있고 false이면 스크롤을 사용할 수 없습니다. 기본값은 true입니다. 스크롤이 비활성화되면 스크롤 뷰는 터치 이벤트를 허용하지 않습니다. 그것들을 반응 체인에 전달합니다.

따라서 scrollView 는 터치를 허용하지 않지만 scrollView 내용은 적용됩니다.

그리고 이것은 scrollView 프로그래밍 방식으로 스크롤하는 것을 허용하지 않습니다 ( scrollView contentOffset 속성을 변경 함). 따라서 UISegmentedControl 의 선택된 세그먼트가 변경되면 페이지 크기에 따라 scrollView 에 대한 새로운 내용 오프셋을 계산하고 설정해야합니다. UIScrollView setContentOffset(_:animated:) 메서드를 사용하여 스크롤을 수행하는 것이 좋습니다.

희망이 도움이됩니다.





uistackview