0

App Storeでの検索のように呼び出されるUISearchBar関数を作成したいと思います。ユーザーが入力を完了してから数秒(NSTimer)後に関数(NSURLConnection)を実行し、この期間に1回だけ実行します。

誰かアイデアがありますか?

編集

    self.currentTaskID = self.currentTaskID + 1;
    NSInteger taskID = self.currentTaskID;

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_SEC), queue, ^{
        if (taskID == self.currentTaskID)
        {
            NSMutableURLRequest *request_CH3 = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://website.com/search.php?term=%@", replaceWhiteSpace]]
                                                               cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                                                           timeoutInterval:30.0];

            [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

            authConnection_CH3 = [[NSURLConnection alloc] initWithRequest:request_CH3 delegate:self];
        }
    });
4

3 に答える 3

3

私は最近同様の質問に答えました、あなたはそれをここで見つけることができます

基本的に、検索を遅らせてキューに入れ、指定された期間内に新しいものが入った場合は、以前にスケジュールされた検索をすべて閉じることができます。

于 2012-11-07T21:50:29.757 に答える
1

これを行うためにタイマーを使用する代わりに、のデリゲート関数を実装しますUISearchBarsearchBarTextDidEndEditingまたはsearchBar:textDidChange、ユーザーが入力した文字数に満足したら、NSURLConnectionリクエストを開始します。

于 2012-11-07T20:54:42.853 に答える
1

検索関数を呼び出したい関数(あなたの場合はクリックした後)

これを実装します:

[timer invalidate];
    timer = nil;
    timer = [NSTimer scheduledTimerWithTimeInterval: 3.0 target: self selector: @selector(thefunctionyouwanttocall) userInfo: nil repeats: NO];

これにより、クリックイベントの3秒後に関数が呼び出されます

于 2012-11-07T20:54:55.097 に答える