2013-02-15 17 views
6

Yatay bir UIScrollView var. Kaydırma görünümünün içerik boyutunun sağ kenarından sonuna kadar çekdiğim, parmağımı serbest bıraktığım ve kaydırma görünümünün geriye dönmesini sağlayan "çek - sıfırla" animasyonunun bir varyasyonunu yapmak istiyorum (0, 0)) içerik ofseti.Sürükledikten sonra UIScrollView sıçramasını iptal et

Benim temsilci yöntemi şöyle görünür: Ben animasyonun süresini kontrol etmek istiyorum, çünkü doAnimatedScrollTo: özel animasyon yöntemi gereklidir

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { 
    //check if it exceeds a certain critical value 
    if (scrollView.contentOffset.x - (scrollView.contentSize.width - IMAGE_WIDTH) > 80) { 
     [self doAnimatedScrollTo:CGPointMake(0, 0)]; 
    } 
} 

.

Bu işlem devam ederken, animasyon kuyruğa alınmış gibi görünüyor. UIScrollView "sıçrama" animasyonu önce gerçekleşir, sonra animasyonum gerçekleşir.

Geri dönen animasyonunu iptal etmenin, içeriği "yakalama" durumundan uzak tutmanın ve sonra animasyonumu gerçekleştirmenin bir yolu var mı?

+0

Öznitelikteki sıçrama özelliğini işaretlemeyi denediniz mi? nspector? – jcesarmobile

+0

@jcesar nope, çünkü zıplama özelliğini açıkça istiyorum. Animasyonun 2. yarısının yürütmesini istemiyorum - yani. "geri sıçrama". – 1actobacillus

+0

O zaman bunun mümkün olduğunu düşünmüyorum. Sıçrama kullanırsanız, tam sıçrama kullanmanız gerekir. Belki bir alt sınıf oluşturursanız, tam animasyonu değiştirebilirsiniz – jcesarmobile

cevap

3

bu

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { 
    //check if it exceeds a certain critical value 
    if (scrollView.contentOffset.x - (scrollView.contentSize.width - IMAGE_WIDTH) > 80) { 
    [scrollView setContentOffset:CGPointMake(0, 0) animated:YES]; 
    } 
} 
2

geri bir UIScrollView animasyon sıçrama iptal gerçekleştirilir deneyin.

Hızlı kaydırma sırasında varsayılan davranışı, sekme olduğunda yukarı çıkacak şekilde bırakmak istedim. Ancak, kaydırma görünümü zaten üstte ise ve kullanıcı onu aşağı çekip serbest bırakıyorsa (yenilemek için çekime benziyorsa) geri dönüşü kontrol altına almak ve özel bir şey yapmak istedim. bayrak ayarlanır ve Scrollview yeterince

Ben scrollview alt sınıf ve setContentOffset geçersiz
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    if (isPullingTop && scrollView.contentOffset.y < -30) { 

     overrideBounce = YES; 
    } 
    isPullingTop = NO; 
} 

sürüklenen ise Scrollview temsilci olarak

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.y < 0.1) 
    { 
     isPullingTop = YES; 
    } 
} 

algılamak: Scrollview temsilci olarak

Ben ilk pozisyonunu takip

İlgili konular