Iphone 在UISearchBar中键入用户停止时检测暂停
我有以下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
- (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:取消任何现有计时器,然后创建并计划一个新计时器。计时器的目标应该调用您的搜索方法 请参阅此重复问题: