NSURLRequest не сработает во время прокрутки UIScrollView - PullRequest
13 голосов
/ 03 ноября 2010

У меня проблема в том, что я пытаюсь загрузить звуковой файл в фоновом режиме, пока пользователь перемещается вокруг UIScrollView ... Проблема в том, что я использую NSURLRequest, чтобы я мог загрузить в фоновом режиме, но даже тогда он отказывается на самом деле загружать, пока UIScrollView не перестал прокручивать. (

Что я могу с этим поделать?

Спасибо!

Ответы [ 2 ]

27 голосов
/ 03 ноября 2010

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];
1 голос
/ 22 мая 2015

Я понял сложный способ, что если вы вызываете startImmediately: YES или пропускаете этот параметр, вторая строка совершенно бесполезна.Поэтому обязательно следуйте точному шаблону, предоставленному @tidwall.

Вот также быстрый пример:

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