2010-06-20 22 views
9

UIScrollView'deki dokunma gecikmesini kısaltmak istiyorum ancak setDelaysContentTouches kullanmak istemiyorum: NO; Hala biraz gecikme olmasını istiyorum ancak kullanıcılarm çok uzun sürdüğünden şikayet ediyorlar.Dokunma gecikmesini UIScrollView'da kısaltın mı?

Bunu yapmanın bir yolu var mı? Kullanıcı daha sonra zamanlayıcı dolmadan yeterince parmağını sürükler, kaydırma görünümü subview herhangi izlemeyi iptal eder ve kendisini kaydırma yaparsa

cevap

3

doc

söylüyor. Alt sınıflar dokunuşlarını geçersiz kılabilirShouldBegin: withEvent: inContentView :, pagingEnabled ve touchesShouldCancelInContentView: kaydırma görünümünün kaydırma hareketlerini nasıl işleyeceğini etkileyecek yöntemleri ( kaydırma görünümü tarafından çağrılır).

Bu yüzden bunu yapmanın kolay bir yolu olmadığını düşünüyorum. Muhtemelen tüm zamanlama sistemini bu yöntemlerde yeniden değerlendirmelisiniz.

0

Sadece bu sorun üzerinde geldi ve bu benim çözümdür:

Alt sınıf UIScrolView

bu yöntemleri geçersiz ekle:

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view 
{ 


    self.lastTimestamp = [NSDate date]; 

    return [super touchesShouldBegin:touches withEvent:event inContentView:view]; 
} 

- (BOOL)touchesShouldCancelInContentView:(UIView *)view 
{ 
     NSDate *now = [NSDate date]; 


    if (-[self.lastTimestamp timeIntervalSinceDate:now] < _delay) 
     return YES; 

    return NO; 
}