【问题标题】:Detect Pause when user stop type in UISearchBar当用户在 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 获取数据的方法。

提前致谢!

【问题讨论】:

    标签: iphone ios ipad nstimer uisearchbar


    【解决方案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

        【讨论】:

          猜你喜欢
          • 2015-06-28
          • 2012-03-27
          • 1970-01-01
          • 2011-10-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-22
          相关资源
          最近更新 更多