13

ユーザーがUIScrollViewを移動しているときにサウンドファイルをバックグラウンドでロードしようとしているという問題があります...問題は、バックグラウンドでロードできるようにNSURLRequestを使用していることですが、それでも実際にロードするまでは拒否されますUIScrollViewはスクロールを停止しました。:(

これについて私にできることはありますか?

ありがとう!

4

2 に答える 2

27

NSURLRequest実際の接続ではなく、リクエストを管理するだけです。

スクロールなどのタッチイベントは、実行ループをに配置しNSEventTrackingRunLoopModeます。デフォルトでは、はでのみ実行されるようにNSURLConnectionスケジュールされています。そのため、中にいる間はブロックされます。NSDefaultRunLoopModeNSEventTrackingRunLoopModeNSDefaultRunLoopMode

NSURLConnection良いニュースは、などの追加モードをスケジュールできることですNSRunLoopCommonModes

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO];
[connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
[connection start];
于 2010-11-03T19:33:01.660 に答える
1

startImmediately:YESを呼び出すか、このパラメーターを省略した場合、2行目は完全に役に立たないという難しい方法を理解しました。したがって、@tidwallによって提供される正確なパターンに従うようにしてください。

簡単な例もあります。

self.connection = NSURLConnection(request: self.request, delegate: self, startImmediately:false)
self.connection?.scheduleInRunLoop(NSRunLoop.currentRunLoop(), forMode: NSRunLoopCommonModes)
self.connection?.start()
于 2015-05-22T11:57:40.913 に答える