当用户在 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 中停止输入时检测暂停的主要内容,如果未能解决你的问题,请参考以下文章

检测自动填充和停止对焦

当 UISearchbar 点击时从私人有效用户设置中读取

如何检测 UISearchBar/UITextField 的输入暂停?

UISearchBar 选择所有文本

输入 UISearchBar 会使我的应用程序崩溃

UIWebView 和 UISearchBar 用于搜索