2

TTThumbsViewController外部ソースからの写真を表示するように拡張しています。すべて正常に動作しますが、コントローラーの動作を 1 つ変更したいと思いますTTThumbsViewController。ユーザーがスクロールを終了したときだけでなく、ユーザーがまだスクロールしている間に画像を表示/ロードしたいと考えています。

スクロールの開始時にリクエストが中断されTTTableViewDelegate.mていることがわかりました。 NO を設定しようとしましたが、画像を取得するだけで、読み込みが終了しても実際には表示されないようです。

//TTTableViewDelegate.m
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
  [TTURLRequestQueue mainQueue].suspended = YES;
  ...
}

さらに、サムネイルを表示することを期待して、begin と end drag デリゲート呼び出しにフックして、1 秒ごとにビューを更新しようとしinvalidateViewましたreloadinvalidateModelここでの私の目的には合いません)。

誰かが私を正しい方向に向けることができますか?

前もって感謝します

Edit1:使用時にスクロールするとステータスバーにローダーがあります[TTURLRequestQueue mainQueue].suspended = NO;が、実際には画像を取得しません。wiresharkで確認しました。

Edit2NSURLConnection :もう少しデバッグした後、リクエストはプログラムで送信されましたが、スクロールが終了した後にのみ応答が受信されることがわかりましたscrollView。 three20 libを使用せずに、tableViewを使用する別のView Controllerで同様のコード(動作)。

4

1 に答える 1

0

多数のスレッドとフォーラムをグーグルで調べた後、最終的に必要な動作を実現しましたが、three20 コードを 1 つの部分で拡張するのではなく変更しました: 私thumbsViewControllerは、スクロール中にリクエストを行うことができる次のデリゲートを実装しました:

-(void)didBeginDragging {
    [super didBeginDragging];
    [TTURLRequestQueue mainQueue].suspended = NO;
}

スクロール中に接続が処理されないという問題を解決するために、UIScrollView が便利にスクロールしているときに NSURLRequest が起動しないことがわかり、TTRequestLoader.m で次のように変更しました。

//TTRequestLoader.m
- (void)connectToURL:(NSURL*)URL {
    ...
    //To allow requests while scrolling we must schedule the conenction in other run loop
    //_connection = [[NSURLConnection alloc] initWithRequest:URLRequest delegate:self];
    //code above was replaced by the one below
    _connection = [[NSURLConnection alloc] initWithRequest:URLRequest delegate:self startImmediately:NO];
    [_connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
    [_connection start];
}
于 2011-12-15T16:59:20.307 に答える