2013-08-28 22 views
8

Bazı alt görünümleri olan bir UIScrollView var. Ben de scrollView'un delegate'um ve - (void)scrollViewDidScroll:(UIScrollView *)scrollView'u uyguladım. Kaydemin altında başka bir görüntü var.Geçerli UIScrollView iptali

Eğer scrollView'ın contentOffset x ekseninde 50px altına düştüğü, "reset" scrollView'ın contentOffset öğesini kaydırıp mevcut scrollView hareketini iptal edip, yeni görünüm belirdiğinde kullanıcının içeriğini değiştirmemesi için bu görünümü göstermek istiyorum. Ben NO için userInteractionEnabled özelliğini ayarlamak için çalıştık

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    if (scrollView.contentOffset.x < -50) 
    { 
     scrollView.contentOffset = CGPointZero; 
     [self showBackView]; 
     //here I want to cancel the current touch on the scrollview since it keeps scrolling if I drag my finger 
    } 
} 

ama dokunmatik bittikten sonra etkili olur:

Ben yöntem şöyle uyguladık. Ve bir sürü başka özellik denedim ama hiç işe yaramıyor.

Bunu nasıl düzeltebilirim? Kaydırma görünümü için panGestureRecognizer işlevini devre dışı bırakmayı deneyin (ve sonra yeniden etkinleştirin).

+0

'scrollEnabled' öğesini NO olarak ayarlamayı denediniz mi? –

+0

Evet, işe yaramadı. Pan jest tanımlayıcısını devre dışı bırakmak işi yapar. – Majster

cevap

31

Bu, tanıyıcı geçerli oturumunu iptal edecektir:

self.scrollView.panGestureRecognizer.enabled = NO; 
self.scrollView.panGestureRecognizer.enabled = YES; 
+1

Bu harika. "UIRefreshControl" ile bir "UITableView" ile bir senaryo aldım, aşağı çekildiğinde bir API çağrısı yaptı. API çağrısı ortaya çıktığında, bir uyarı diyaloğu vardı. Sorun, bağlantınızın hala "UITableView" üzerindeydi, böylece istemediğimiz başka bir API çağrısını arayabilir ve arayabilirdiniz. Artık "UITableViews" dokunma olayı iptal edildiğinde, kullanıcı uyarı nedeniyle temel tablo görünümünde etkileşimde bulunamaz. – micnguyen