채팅 앱에서 일하고 있는데 처음에는 데이터베이스에서 100 개의 메시지 만 가져옵니다. 사용자가 스크롤 할 때 데이터베이스에서 메시지를 가져 와서 테이블을 다시로드하고 테이블을 다시로드 한 다음 수동으로 내용 오프셋을 설정하여 스크롤 위치를 유지합니다. 스크롤 위치는 정상적으로 작동하지만 tableview 스크롤이 중지되어 사용자가 얼버무 리는 느낌이 들게됩니다. 사용자가 메시지를 가져오고 테이블이 다시로드되었다고 느끼는 것을 원하지 않습니다. 중지 된 스크롤을 다시 시작하는 방법. 사용자가 수동으로 테이블을 스크롤 할 때 UITableView의 panGestureRecognizer 속성을 사용하여 방향과 속도를 얻습니다.UITableView에서 userScrolling을 시뮬레이트하십시오.
1
A
답변
0
정확하게 이해하면 테이블보기에서 페이징 메커니즘을 구현하고 싶습니다. 사용자가 스크롤보기의 시작 부분에 도달하면 다음 페이지가 반입되고 이로 인해 재미있는 경험을 할 수 있습니다. 내 제안은 사용자가 스크롤하는 동안 일정한 임계 값에 대해 tableView.contentOffset.y
을 테스트하는 것입니다. contentOffset.y
이이 임계 값을 초과하면 다음 페이지를 가져옵니다.
UIScrollViewDelegate
scrollViewDidScroll(_:)
메서드를 구현하여 contentOffset을 가져 와서 임계 값과 비교할 수 있습니다. 그런 식으로, 데이터는 사용자가 tableView의 끝에 도달하기 전에 (어느 정도까지) 가져올 수 있습니다.
private let fetchThreshold: CGFloat = 80
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if scrollView.contentOffset.y > scrollView.contentSize.height - scrollView.frame.height - fetchThreshold {
/* Fetch next page.
Remember to lock the process so the data won't be fetched multiple times. Use a boolean...
*/
}
}
관련 문제
- 1. Elixir에서 삼항 연산자를 시뮬레이트하십시오.
- 2. 초점을 맞출 창을 시뮬레이트하십시오.
- 3. bash 스크립트에서 사용자 입력을 시뮬레이트하십시오.
- 4. objective-c가있는 Java에서 인터페이스를 시뮬레이트하십시오.
- 5. 확대하려면 "Windows"키와 "+"키를 시뮬레이트하십시오
- 6. Angular 2에서 긴 응답을 시뮬레이트하십시오.
- 7. 응용 프로그램에 집중하고 키 누르기를 시뮬레이트하십시오.
- 8. Matlab에서 몸체 주위의 궤도 운동을 시뮬레이트하십시오.
- 9. C++에서 Java의 Thread 클래스를 시뮬레이트하십시오.
- 10. Perl에서 "property"와 같은 Python을 시뮬레이트하십시오.
- 11. 브라우저 안의 Android .apk 파일을 시뮬레이트하십시오.
- 12. 얼랑 (Erlang)에서 비행기 세트를 시뮬레이트하십시오.
- 13. C++의 시스템 레벨에서 키보드 입력을 시뮬레이트하십시오.
- 14. 내 웹 사이트에서 채팅 메시지를 시뮬레이트하십시오.
- 15. UITableview에서 정의한 UITableview에서 키보드를 닫는 방법
- 16. Uitableview에서 데이터로드
- 17. UITableView에서 UISplitViewController로드
- 18. uitableview에서 레이블 변경
- 19. UITableView에서 KeyBoard를 숨기는 방법
- 20. UITableView에서 모든 UITextField를 루핑
- 21. UITableView에서 셀 텍스트 편집
- 22. UITableView에서 SuperView로 정보 전송
- 23. 하나의 UITableView에서 여러 스타일
- 24. UITableView에서 행을 어떻게 삭제합니까?
- 25. UITableview에서 setEdit 메서드를 재정의하십시오.
- 26. UITableView에서 데이터를 업데이트하는 방법?
- 27. viewDidAppear의 UITableView에서 rowHeight 설정
- 28. UITableView에서 스크롤하는 방법
- 29. UITableView에서 가로로 튀는 것
- 30. UITableView에서 문서 제외
예 제대로 작동하는 페이징을 구현했습니다. 문제는 스크롤링이 중지되고 사용자가 다시 스크롤해야한다는 것입니다. –
내 채팅 앱에서이 트릭이 드릴을 수행했습니다 (사용자가 scrollView의 끝에 도달하면 다음 페이지 데이터를 이미 사용할 수 있다는 조건에서). – DanielH
나는 같은 방식으로 구현했다. 사용자가 스크롤을 끝내기 전에 데이터를 프리 페치합니다. 문제는 -setContentOffset뿐입니다. 스크롤 오프셋을 설정하여 스크롤 위치를 복원하면 스크롤이 중지됩니다. –