我有以下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获取数据的方法。
提前致谢!!
答案 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