2010-11-03 37 views
13

Tôi gặp vấn đề ở chỗ tôi đang cố gắng tải nền tệp âm thanh trong khi người dùng di chuyển xung quanh UIScrollView ... Vấn đề là tôi đang sử dụng NSURLRequest để tôi có thể tải nền, nhưng thậm chí sau đó nó từ chối thực sự tải cho đến khi UIScrollView ngừng cuộn. :(NSURLRequest sẽ không kích hoạt trong khi UIScrollView đang cuộn

Có bất cứ điều gì tôi có thể làm gì về điều này?

Cảm ơn!

Trả lời

27

Các NSURLRequest chỉ quản lý theo yêu cầu, không phải là kết nối thực tế.

cảm ứng các sự kiện như di chuyển sẽ đặt thời gian Theo mặc định, NSURLConnection được lên lịch chỉ thực hiện trong NSDefaultRunLoopMode. Vì vậy, trong khi ở NSEventTrackingRunLoopMode, NSDefaultRunLoopMode bị chặn

Tin tốt là bạn có thể lên lịch các chế độ bổ sung cho NSURLConnection, chẳng hạn như NSRunLoopCommonModes.

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

Cám ơn này ... lưu tôi một nhức đầu rất lớn! :-) Sự khác nhau giữa NSEventTrackingRunLoopMode và NSRunLoopCommonModes là gì? – jowie

+1

AFAIK, kết nối được lên lịch trong NSRunLoopCommonModes sẽ được giám sát bởi tất cả các vòng chạy. Nếu nó được lên lịch trong NSEventTrackingRunLoopMode, thì nó sẽ chỉ được theo dõi trong khi có các sự kiện chạm. http://developer.apple.com/library/ios/documentation/cocoa/reference/foundation/Classes/NSRunLoop_Class/Reference/Reference.html#//apple_ref/doc/uid/20000321-CJBJABGH – tidwall

1

Tôi đã tìm ra cách khó khăn nếu bạn gọi startImmediately: YES hoặc ommit tham số dòng thứ hai này hoàn toàn vô dụng. Vì vậy, hãy chắc chắn để làm theo các mô hình chính xác được cung cấp bởi @ tidwall.

Đây cũng là một ví dụ nhanh chóng:

self.connection = NSURLConnection(request: self.request, delegate: self, startImmediately:false) 
self.connection?.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes) 
self.connection?.start() 
Các vấn đề liên quan