2013-05-01 82 views
3

我有以下的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是方法,其从地址获取数据。

在此先感谢!

回答

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]; 

} 
0

每当您为NSTimer创建新对象时,这就是为什么它会给出空值。

全球宣布NSTimer *myTimer

0

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

提到这个重复的问题:UISearchBar detect when user stop type and don't search immediately so detect pause