当用户在 UISearchBar 中停止输入时检测暂停
Posted
技术标签:
【中文标题】当用户在 UISearchBar 中停止输入时检测暂停【英文标题】:Detect Pause when user stop type in UISearchBar 【发布时间】:2013-05-01 06:15:17 【问题描述】:我有以下 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 获取数据的方法。
提前致谢!
【问题讨论】:
【参考方案1】:请将此行写入.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];
【讨论】:
【参考方案2】:每次为 NSTimer 创建新对象时,它都会返回 null。
全局声明NSTimer *myTimer
。
【讨论】:
【参考方案3】:您可以使用 NSTimer 来延迟搜索的调用,并在文本更改时取消计时器:给您的对象一个 NSTimer 属性或字段;在 searchBar:textDidChange: 中取消任何现有计时器,然后创建并安排一个新计时器。计时器的目标应该调用您的搜索方法。
参考这个重复的问题:UISearchBar detect when user stop type and don't search immediately so detect pause
【讨论】:
以上是关于当用户在 UISearchBar 中停止输入时检测暂停的主要内容,如果未能解决你的问题,请参考以下文章