当UIScrollView滚动时,NSURLRequest不会触发
我有一个问题,我试图在用户移动UIScrollView时后台加载声音文件…问题是我使用NSURLRequest所以我可以在后台加载,但即便如此它拒绝实际加载,直到UIScrollView已停止滚动。 🙁
我能做些什么吗?
谢谢!
NSURLRequest
仅管理请求,而不是实际连接。
触摸事件(如滚动)会将运行循环放入NSEventTrackingRunLoopMode
。 默认情况下, NSURLConnection
计划仅在NSDefaultRunLoopMode
执行。 因此,在NSEventTrackingRunLoopMode
, NSDefaultRunLoopMode
被阻止。
好消息是您可以为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()