관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 스크롤 끝나는 타이밍 확인 방법 (#UIScrollView, #decelerate, scrollViewDidEndDragging) 본문

iOS 응용 (swift)

[iOS - swift] 스크롤 끝나는 타이밍 확인 방법 (#UIScrollView, #decelerate, scrollViewDidEndDragging)

jake-kim 2024. 2. 9. 01:12

scrollViewDidEndDragging(_:willDecelerate:) 개념

  • scrollView의 델리게이트 메소드
  • 스크롤하는 드래그가 종료되었을때 호출

  • 스크롤이 종료되었을때 호출
    • decelerate값이 true이면 사용자가 스크롤을 놓을때 관성으로 놓아진것 (드래그를 떼고나서 서서히 멈추는 스크롤 됨)
    • decelerate값이 false이면 사용자가 스크롤을 놓을때 관성없이 놓은것 (드래그를 떼고나서 바로 멈춤)
extension ViewController: UITableViewDelegate {
    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        print("decelerate>", decelerate)
    }
}

decelerate를 이용하여 스크롤 끝나는 타이밍 알기

  • true와 false인 상태
    • decelerate값이 true: 드래그를 떼고나서 서서히 멈추는 스크롤이 동작
    • decelerate값이 false: 드래그를 떼고나서 바로 멈춤
  • false인 상태인 경우, 드래그가 떼어졌을때 서서히 멈추는 스크롤 없이 스크롤이 바로 멈추는 경우인데, 이것을 활용하면 다양한 케이스 대응이 가능 
    • 스크롤을 안뗀 상태에서 다른 화면으로 이동한 경우
    • 스크롤을 안뗀 상태에서 background로 이동한 경우
  • 중요한 사실: 스크롤을 안뗀 상태에서 위와같은 상황이 발생하면 gesture가 취소되고 바로 scrollViewDidEndDragging 메서드가 호출됨 ()

ex) 스크롤을 안뗀 상태에서 background로 이동한 경우 -> decelerate값이 false로 호출

 

Comments