일부 이전 iOS 버전 (예 : iOS 9, 10)에서 scrollViewDidEndDecelerating
에서 scrollView를 터치하여 갑자기 중지하면 트리거되지 않습니다.
그러나 현재 버전 (iOS 13)에서는 scrollViewDidEndDecelerating
확실하게 트리거됩니다 (아는 한).
따라서 앱이 이전 버전을 대상으로하는 경우 Ashley Smart에서 언급 한 것과 같은 해결 방법이 필요하거나 다음과 같은 해결 방법이 필요할 수 있습니다.
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
if !scrollView.isTracking, !scrollView.isDragging, !scrollView.isDecelerating { // 1
scrollViewDidEndScrolling(scrollView)
}
}
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
if !decelerate, scrollView.isTracking, !scrollView.isDragging, !scrollView.isDecelerating { // 2
scrollViewDidEndScrolling(scrollView)
}
}
func scrollViewDidEndScrolling(_ scrollView: UIScrollView) {
// Do something here
}
설명
UIScrollView는 세 가지 방법으로
중지됩니다
.-빠르게 스크롤 및 자체 중지 -손가락 터치로 빠르게 스크롤 및 중지 (비상 브레이크)
-천천히 스크롤 및 중지
첫 번째는 scrollViewDidEndDecelerating
다른 유사한 방법 으로 감지 할 수 있지만 다른 두 가지는 감지 할 수 없습니다.
운 좋게도 UIScrollView
식별 할 수있는 상태는 "// 1"과 "// 2"로 표시된 두 줄에 사용됩니다.