2015-10-15 75 views
0

我有UISearchControllerUISearchBar在裏面。當用戶沒有觸摸鍵盤時(用戶完成在鍵盤上寫入文本時),我想在3秒鐘後進行功能調用。我搜索了這些信息,但我沒有找到任何信息。我怎麼做到的?如何知道用戶沒有觸摸鍵盤?

+0

利用它獲取的每一個按鍵的觸摸重置,如果時間用完,用戶沒有在最後3秒觸及關鍵的計時器。 – luk2302

回答

3

您可以通過啓動一個定時器,每一次延遲搜索方法的SEARCHTEXT改變使用searchBar textDidChange方法:

的Objective-C:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
[searchDelayer invalidate]; 
searchDelayer=nil; 
searchDelayer = [NSTimer scheduledTimerWithTimeInterval:3 
               target:self 
               selector:@selector(doDelayedSearch:) 
               userInfo:searchText 
               repeats:NO]; 
} 

-(void)doDelayedSearch:(NSTimer *)t 
{ 
assert(t == searchDelayer); 
[self request:searchDelayer.userInfo]; // your search method 
searchDelayer = nil; 
} 

不要忘了在你的.h文件中添加NSTimer *searchDelayer

斯威夫特:

var searchDelayer: NSTimer 

override func searchBar(searchBar: UISearchBar, textDidChange searchText: String) { 
searchDelayer.invalidate() 
searchDelayer = nil 
searchDelayer = NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: "doDelayedSearch", userInfo: searchText, repeats: false) 
} 

func doDelayedSearch(t: NSTimer) { 
assert(t == searchDelayer) 
self.request(searchDelayer.userInfo) 
searchDelayer = nil 
}