2010-11-03 16 views
13

üzerinde gezinirken NSURLRequest çalışmaz, kullanıcı UIScrollView etrafında hareket ederken bir ses dosyası yüklemek için çalıştığım bir sorunum var ... Sorun şu ki NSURLRequest kullanıyorum, böylece yükleyebiliyorum arka plan, ancak daha sonra UIScrollView kaydırma durdu kadar gerçekte yüklemeyi reddediyor. :(UIScrollView

Bu konuda yapabileceğim bir şey? Var mı

teşekkürler!

cevap

27

NSURLRequest yalnızca isteği değil, gerçek bağlantı. Kaydırma olarak

Dokunmatik olaylar çalıştırmak yerleştirecektir yönetir sadeceNSDefaultRunLoopMode içinde NSEventTrackingRunLoopMode içine döngü. varsayılan olarak, bir NSURLConnectionplanlanıyor yürütün. NSEventTrackingRunLoopMode yılında, NSDefaultRunLoopMode bloke edilirken Yani.

İyi haber, NSRunLoopCommonModes gibi NSURLConnection için ek modlar planlayabilmenizdir. EVET veya bu parametre ikinci çizgiyi ommit tamamen yararsız olduğunu:

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; 
[connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; 
[connection start]; 
+0

Teşekkür:

Burada da hızlı bir örnek! :-) NSEventTrackingRunLoopMode ve NSRunLoopCommonModes arasındaki fark nedir? – jowie

+1

AFAIK, NSRunLoopCommonModes içinde planlanan bir bağlantı tüm çalışma döngüleri tarafından izlenir. NSEventTrackingRunLoopMode'da planlanmışsa, yalnızca dokunma olayları varken izlenecektir. http://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSRunLoop_Class/Reference/Reference.html#//apple_ref/doc/uid/20000321-CJBJABGH – tidwall

1

Sana startImmediately çağırırsanız o zor yolu anladım. Bu nedenle, @tidwall tarafından sağlanan tam modeli takip ettiğinizden emin olun. Bu ... bana büyük bir baş ağrısı Kaydedilen için

self.connection = NSURLConnection(request: self.request, delegate: self, startImmediately:false) 
self.connection?.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes) 
self.connection?.start()