Yönü belirlemek oldukça basittir, ancak yönün bir hareket sırasında birkaç kez değişebileceğini unutmayın. Örneğin, disk belleği açık bir kaydırma görünümünüz varsa ve kullanıcı bir sonraki sayfaya gitmek için hızlıca kaydırırsa, ilk yön sağa doğru olabilir, ancak sekme açıksa, kısa bir süre hiçbir yöne gitmeyecektir ve sonra kısaca sola gidiyor.
Yönü belirlemek için UIScrollView scrollViewDidScroll
temsilciyi kullanmanız gerekir . Bu örnekte, lastContentOffset
geçerli içerik dengesini bir öncekiyle karşılaştırmak için kullandığım adlı bir değişken oluşturdum . Daha büyükse, scrollView sağa kayar. Daha azsa, scrollView sola kaydırıyor:
// somewhere in the private class extension
@property (nonatomic, assign) CGFloat lastContentOffset;
// somewhere in the class implementation
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
ScrollDirection scrollDirection;
if (self.lastContentOffset > scrollView.contentOffset.x) {
scrollDirection = ScrollDirectionRight;
} else if (self.lastContentOffset < scrollView.contentOffset.x) {
scrollDirection = ScrollDirectionLeft;
}
self.lastContentOffset = scrollView.contentOffset.x;
// do whatever you need to with scrollDirection here.
}
Yön tanımlamak için aşağıdaki numarayı kullanıyorum. İlk değeri ScrollDirectionNone olarak ayarlamak, değişkenleri başlatırken bu yönü varsayılan yapmak gibi bir avantaj sağlar:
typedef NS_ENUM(NSInteger, ScrollDirection) {
ScrollDirectionNone,
ScrollDirectionRight,
ScrollDirectionLeft,
ScrollDirectionUp,
ScrollDirectionDown,
ScrollDirectionCrazy,
};