내 테이블의 헤더보기에 UISearchBar가 있습니다. 애니메이션이 발생할 때마다 (예 : 행을 삭제하거나 삽입 할 때 헤더보기가 아래로 스크롤됩니다. 테이블 뷰에 헤더 뷰를 (자동으로) 스크롤해서는 안된다는 것을 알 수있는 방법이 있습니까? (사용자 만이 그것을 아래로 내릴 수 있어야합니다.)행 애니메이션이 내 TableHeaderView를 스크롤하지 못하게하려면 어떻게해야합니까?
0
A
답변
0
& StackOverFlow에서 광범위한 검색을 한 후에 나는 UIScrollView
이라는 단서를 발견했습니다. 나는 해결책을 조금 사용자 정의
Change Default Scrolling Behavior of UITableView Section Header는 다음과 같은 특성을 가지고 :
- 행 애니메이션 테이블 뷰를 아래로 스크롤 할 수 있습니다 드디어 구현을 찾고 있었다 실제 솔루션은 또 다른 질문에서 찾을 수 있습니다 헤더 뷰
- 위에 클릭을 표시하지 않는 한 헤더 뷰는 그 자체를 밀어한다 부분적 보이면 헤더보기
- 제외 가기 테이블 뷰를 스크롤한다 ("위로 스크롤") 아래로 완전히 볼 수 있습니다. 이 솔루션 617,451,515,
코드 :
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat searchBarHeight = self.searchBar.frame.size.height;
if (scrollView.contentOffset.y >= searchBarHeight) {
scrollView.contentInset = UIEdgeInsetsMake(-searchBarHeight, 0, 0, 0);
} else {
scrollView.contentInset = UIEdgeInsetsZero;
}
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (scrollView.contentOffset.y < self.searchBar.frame.size.height && scrollView.contentOffset.y > 0) {
[scrollView setContentOffset:CGPointZero animated:YES];
}
}
이 코드 UITableView
위한 대리인 역할을하는하는 UITableViewController
안에 구현된다. 다른 쪽의 UITableView
은 UIScrollView
에서 상속받습니다.이 방법을 사용하면 모든 마법을 수행 할 수 있습니다.
contentOffset
과 contentInset
을 설명하는 문장이 몇 개 있는데, 그 의미를 이해하는 데 다소 시간이 걸렸습니다. 오프셋
- 단순히, 즉 테이블 뷰 & 셀 섹션, 왼쪽 상단에서 아래로 스크롤하는 방법을 지금까지 표시되는 콘텐츠 지시하는
CGPoint
이다. 머리글보기와 바닥 글보기가 포함되어 있으므로 오프셋 (0, 0)은 테이블보기가 맨 위로 스크롤된다는 것을 나타냅니다. 오프셋 (0, 100)은 테이블 뷰가 100 픽셀 아래로 스크롤된다는 것을 의미합니다 (포인트의 x 값은 일반적으로 사용되지 않습니다). - 삽입은 매우 흥미로운 속성이며
UIScrollView
의 경계를 quadrupel(top, left, bottom, right)
으로 정의합니다. 따라서 이러한 경계를 넘으면 테이블보기가 튀어 나옵니다. 기본값은 (0, 0, 0, 0)입니다. 첫 번째/마지막 셀 위/아래로 스크롤하면 테이블 뷰가 바운스됩니다. 따라서 (-44, 0, 0, 0)의 값은 바운스 경계를 표보기의 원점보다 44 픽셀 아래로 낮 춥니 다. 내 머리글보기가 44 픽셀이기 때문에 머리글보기를 화면의 보이는 부분으로 스크롤 할 때마다 바운스됩니다. 이것은 또한 행 애니메이션이 (44, 0)의 오프셋 아래로 테이블을 밀어 내지 못하게하고 "slide to top"명령은 테이블 뷰를 (44, 0)의 오프셋으로 슬라이드시킵니다.
도움이 되었기를 바랍니다. :)
관련 문제
- 1. 해시 태그 링크가 페이지를 스크롤하지 못하게하려면 어떻게해야합니까?
- 2. R이 패키지를로드하지 못하게하려면 어떻게해야합니까?
- 3. reloadRowsAtIndexPaths가 사용자 입력을 차단하지 못하게하려면 어떻게해야합니까?
- 4. 출력을 인쇄하지 못하게하려면 어떻게해야합니까?
- 5. 내 사용자가 내 Ruby 코드를 읽지 못하게하려면 어떻게해야합니까?
- 6. 부트 스트랩 접을 수있는 상자가 페이지를 스크롤하지 못하게하려면 어떻게합니까?
- 7. 브라우저가 쿠키를 저장하지 못하게하려면 어떻게해야합니까?
- 8. WPF에서 스타일을 재정의하지 못하게하려면 어떻게해야합니까?
- 9. IIS7이 쿠키를 삭제하지 못하게하려면 어떻게해야합니까?
- 10. ImageChops.offset에서 데이터를 래핑하지 못하게하려면 어떻게해야합니까?
- 11. 옥타브가 sigsegv를 잡지 못하게하려면 어떻게해야합니까?
- 12. IIS7에서 HttpHandlers를 사용하지 못하게하려면 어떻게해야합니까?
- 13. Xcode에서이 작업을 수행하지 못하게하려면 어떻게해야합니까?
- 14. .NET에서 창을 표시하지 못하게하려면 어떻게해야합니까?
- 15. MySql에서 기본 행을 제거하지 못하게하려면 어떻게해야합니까?
- 16. ActiveRecord가 DB에 쓰지 못하게하려면 어떻게해야합니까?
- 17. CWnd가 포커스를 얻지 못하게하려면 어떻게해야합니까?
- 18. 사람들이 페이지에 로그인하지 못하게하려면 어떻게해야합니까?
- 19. svn에서 디렉토리를 변경하지 못하게하려면 어떻게해야합니까?
- 20. Cassandra가 TFastFramedTransport를 사용하지 못하게하려면 어떻게해야합니까?
- 21. SparkViewEngine의 {!}을 렌더링하지 못하게하려면 어떻게해야합니까?
- 22. 사용자가 VBA에 액세스하지 못하게하려면 어떻게해야합니까?
- 23. 사용자가 특정 브라우저로 내 사이트를 탐색하지 못하게하려면 어떻게해야합니까?
- 24. 다른 사람들이 내 웹 서비스에 액세스하지 못하게하려면 어떻게해야합니까?
- 25. Android 사용자가 내 애플리케이션의 APK를 추출하지 못하게하려면 어떻게해야합니까?
- 26. 내 맞춤 요소가 자체 div를 얻지 못하게하려면 어떻게해야합니까?
- 27. 사용자가 내 애플리케이션을 닫지 못하게하려면 어떻게해야합니까? (Linux Touchscreen apps)
- 28. 다른 사람들이 내 Facebook 응용 프로그램을 사용하지 못하게하려면 어떻게해야합니까?
- 29. 합법적이지 않은 클라이언트 앱이 내 서버를 사용하지 못하게하려면 어떻게해야합니까?
- 30. Internet Explorer에서 내 PNG 이미지의 색상을 변경하지 못하게하려면 어떻게해야합니까?