Iphone 在UISearchBar中键入用户停止时检测暂停

Iphone 在UISearchBar中键入用户停止时检测暂停,iphone,ios,ipad,nstimer,uisearchbar,Iphone,Ios,Ipad,Nstimer,Uisearchbar,我有以下UISearchbar代码: - (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { NSTimer *myTimer; NSLog(@"Timer=%@",myTimer); if (myTimer) { if ([myTimer isValid]) { [myTimer invalidat

我有以下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获取数据的方法


提前感谢

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


全局声明
NSTimer*myTimer

请在.h文件中写入这一行

NSTimer *myTimer;
- (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];

}
然后在.m文件中执行

NSTimer *myTimer;
- (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];

}

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

请参阅此重复问题: