2015-10-15 76 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 
}