当UIScrollView滚动时,NSURLRequest不会触发

我有一个问题,我试图在用户移动UIScrollView时后台加载声音文件…问题是我使用NSURLRequest所以我可以在后台加载,但即便如此它拒绝实际加载,直到UIScrollView已停止滚动。 🙁

我能做些什么吗?

谢谢!

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

触摸事件(如滚动)会将运行循环放入NSEventTrackingRunLoopMode 。 默认情况下, NSURLConnection计划NSDefaultRunLoopMode执行。 因此,在NSEventTrackingRunLoopModeNSDefaultRunLoopMode被阻止。

好消息是您可以为NSURLConnection安排其他模式,例如NSRunLoopCommonModes

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

我已经弄清楚如果你调用startImmediately很难:是或者省略这个参数第二行是完全没用的。 所以一定要遵循@tidwall提供的确切模式。

这也是一个迅速的例子:

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