13

我有一个问题,我试图在用户移动 UIScrollView 时在后台加载声音文件...问题是我正在使用 NSURLRequest 所以我可以在后台加载,但即使那样它也拒绝实际加载,直到UIScrollView 已停止滚动。:(

对此我能做些什么吗?

谢谢!

4

2 回答 2

27

唯一管理请求,而NSURLRequest不是实际连接。

滚动等触摸事件会将运行循环放入NSEventTrackingRunLoopMode. 默认情况下, anNSURLConnection计划NSDefaultRunLoopMode. 因此,在 中时NSEventTrackingRunLoopModeNSDefaultRunLoopMode被阻止。

好消息是您可以NSURLConnectionNSRunLoopCommonModes.

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
[connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[connection start];
于 2010-11-03T19:33:01.660 回答
1

我已经想出一个艰难的方法,如果你调用 startImmediately:YES 或省略这个参数,第二行是完全没用的。所以一定要遵循@tidwall 提供的确切模式。

这也是一个快速的例子:

self.connection = NSURLConnection(request: self.request, delegate: self, startImmediately:false)
self.connection?.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
self.connection?.start()
于 2015-05-22T11:57:40.913 回答