当用户在UISearchBar中停止输入时检测暂停

时间:2013-05-01 06:15:18

标签: iphone ios ipad nstimer uisearchbar

我有以下UISearchbar代码:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    NSTimer *myTimer;

    NSLog(@"Timer=%@",myTimer);
    if (myTimer)
    {
        if ([myTimer isValid])
        {
            [myTimer invalidate];
        }
        myTimer=nil;
    }
    myTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(OnTextChange) userInfo:nil repeats:NO];

}

在编写上述代码后,我的日志显示Timer=null

OnTextChange是从Url获​​取数据的方法。

提前致谢!!

3 个答案:

答案 0 :(得分:5)

请在 .h 文件

中写下此行
NSTimer *myTimer;

然后在 .m 文件

中执行此操作
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{

    NSLog(@"Timer=%@",myTimer);
    if (myTimer)
    {
        if ([myTimer isValid])
        {
            [myTimer invalidate];
        }
        myTimer=nil;
    }
    myTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(OnTextChange) userInfo:nil repeats:NO];

}

答案 1 :(得分:0)

每次为NSTimer创建新对象时,都会给出null。

全球宣布NSTimer *myTimer

答案 2 :(得分:0)

您可以使用NSTimer来延迟搜索的调用,并在文本更改时取消计时器:为您的对象提供NSTimer属性或字段;在searchBar中:textDidChange:取消任何现有的计时器,然后创建并计划一个新的计时器。计时器的目标应该调用您的搜索方法。

请参阅此重复问题:UISearchBar detect when user stop type and don't search immediately so detect pause