我有一个问题,我试图在用户移动 UIScrollView 时在后台加载声音文件...问题是我正在使用 NSURLRequest 所以我可以在后台加载,但即使那样它也拒绝实际加载,直到UIScrollView 已停止滚动。:(
对此我能做些什么吗?
谢谢!
我有一个问题,我试图在用户移动 UIScrollView 时在后台加载声音文件...问题是我正在使用 NSURLRequest 所以我可以在后台加载,但即使那样它也拒绝实际加载,直到UIScrollView 已停止滚动。:(
对此我能做些什么吗?
谢谢!
唯一管理请求,而NSURLRequest
不是实际连接。
滚动等触摸事件会将运行循环放入NSEventTrackingRunLoopMode
. 默认情况下, anNSURLConnection
计划仅在NSDefaultRunLoopMode
. 因此,在 中时NSEventTrackingRunLoopMode
,NSDefaultRunLoopMode
被阻止。
好消息是您可以NSURLConnection
为NSRunLoopCommonModes
.
connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
[connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[connection start];
我已经想出一个艰难的方法,如果你调用 startImmediately:YES 或省略这个参数,第二行是完全没用的。所以一定要遵循@tidwall 提供的确切模式。
这也是一个快速的例子:
self.connection = NSURLConnection(request: self.request, delegate: self, startImmediately:false)
self.connection?.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
self.connection?.start()