2013-05-01 88 views
3

我有以下的UISearchBar代碼用戶停止型:上述代碼寫入我的日誌後檢測暫停時的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是方法,其從地址獲取數據。

在此先感謝!

回答

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]; 

} 
0

每當您爲NSTimer創建新對象時,這就是爲什麼它會給出空值。

全球宣佈NSTimer *myTimer

0

你可以使用一個NSTimer耽誤您的搜索調用,並在文本更改時取消定時器:給你的對象一個NSTimer屬性或字段;在searchBar中:textDidChange:取消任何現有的計時器,然後創建並計劃一個新的計時器。計時器的目標應該調用您的搜索方法。

提到這個重複的問題:UISearchBar detect when user stop type and don't search immediately so detect pause