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()
Другие вопросы по тегам