NSURLRequest не сработает во время прокрутки UIScrollView
У меня проблема в том, что я пытаюсь фоновой загрузки звукового файла, пока пользователь перемещается вокруг UIScrollView... Проблема в том, что я использую NSURLRequest, поэтому я могу загрузить в фоновом режиме, но даже тогда он отказывается загружаться до UIScrollView остановил прокрутку.:(
Что я могу с этим поделать?
Спасибо!
2 ответа
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:YES или пропускаете этот параметр, вторая строка совершенно бесполезна. Поэтому обязательно следуйте точному шаблону, предоставленному @tidwall.
Вот также быстрый пример:
self.connection = NSURLConnection(request: self.request, delegate: self, startImmediately:false)
self.connection?.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
self.connection?.start()