2012-05-23 11 views
10

scrollView'i sürüklediğinizde geçerli thread RunLoop modunun UITrackingRunLoopMode olarak değiştiği UIScrollView davranışını ve sürüklemeyi durdurduğunuzda NSDefaultRunLoopMode'a geri takmak istiyorum.Geçerli iş parçacığı NSRunLoop'u durdurmaya karar verene kadar belirli bir modda çalışacak şekilde ayarlamanın doğru yolu nedir?

Ben değişir yüzden döngü durdurmak nil _draggingView Ben sürükleyerek durdurduğunuzda Şu anda bu kodu

while (_draggingView && [[NSRunLoop currentRunLoop] runMode:UITrackingRunLoopMode beforeDate:[NSDate distantFuture]]); 

kullanıyorum ... görünümleri etrafında sürükleyerek olsa da, kendi sınıf ile yapmak istiyorum bu modda. Bunu yapmanın daha zarif/daha iyi bir yolu var mı?

UIScrollView bunu nasıl yapıyor? Giriş kaynakları?

Eğer

+0

Bazı özel API'leri kullanmadan çalışma döngüsü modunu değiştirmenin mümkün olmadığını düşünüyorum. Daha ne yapmayı planlıyorsunuz? – sergio

+0

Neden runloop modunu değiştirmek istiyorsunuz? herhangi bir gerçek problem var mı yoksa runloop hakkında daha fazla bilgi edinmek mi istiyorsunuz? – Tushar

cevap

3

Bir çalışma döngüsünün dönmek üzere zorlamak için CFRunLoopStop'u kullanabilirsiniz.

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    [super touchesEnded:touches withEvent:event]; 
    CFRunLoopStop(CFRunLoopGetMain()); 
} 
+1

Bir runLoop'u durdurmak istemiyorum. Ben sadece modu değiştirmek istiyorum. – LocoMike

+0

Modu değiştiremezsiniz. Bir modda çalıştırırsın. Farklı bir modda çalışmak istediğinizde, mevcut koşuyu durdurursunuz ve yeni modda tekrar başlatınız (ya da “CFRunLoopRun'un dış çağrısına geri dönüp devam etmesine izin veriniz). –

-1

Sen Yavafllat yöntem kullanabilirsiniz ederiz.

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 

Kaydırma görünümünü sürükledikten sonra, yavaşlamaya başlar, bu nedenle, bu yöntemler sizin için geçerli olabilir.

+0

Hayır, hiçbir işe yaramadı. UISCrollView'ım yok, sadece istediğim zaman UITrackingRunLoopMode'da çalışmak için ana iş parçacığının NSRunLoop'unu değiştirmek istiyorum (UIScrollView, sürüklediğinizde yaptığınız gibi). Yinede teşekkürler. – LocoMike

+0

Yanlış düşündüm sanırım, ben dispiace ..! –

İlgili konular