कुछ पुराने iOS संस्करणों पर (जैसे iOS 9, 10), scrollViewDidEndDecelerating
यदि स्क्रॉलव्यू को अचानक टच करने से रोका नहीं जाता है, तो ट्रिगर नहीं होगा।
लेकिन वर्तमान संस्करण (iOS 13) में, scrollViewDidEndDecelerating
सुनिश्चित करने के लिए ट्रिगर किया जाएगा (जहाँ तक मुझे पता है)।
इसलिए, यदि आपका ऐप पहले के संस्करणों को भी लक्षित करता है, तो आपको एशले स्मार्ट द्वारा बताए गए तरीके से वर्कअराउंड की आवश्यकता हो सकती है, या आप निम्नलिखित को ले सकते हैं।
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" द्वारा टिप्पणी की गई दो पंक्तियों में किया जाता है।