0
我有UISearchController
和UISearchBar
在裏面。當用戶沒有觸摸鍵盤時(用戶完成在鍵盤上寫入文本時),我想在3秒鐘後進行功能調用。我搜索了這些信息,但我沒有找到任何信息。我怎麼做到的?如何知道用戶沒有觸摸鍵盤?
我有UISearchController
和UISearchBar
在裏面。當用戶沒有觸摸鍵盤時(用戶完成在鍵盤上寫入文本時),我想在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
}
利用它獲取的每一個按鍵的觸摸重置,如果時間用完,用戶沒有在最後3秒觸及關鍵的計時器。 – luk2302