我有这个问题,我一直在推迟解决,但现在是时候了。
我有一个基本的字典程序。它有一个 UISearchBar 和一个 UITableView。它以应有的方式工作,除非在设备上运行时会导致键盘滞后。(模拟器当然可以)我有两种搜索方式。即用型和返回型。我发现两者都需要大约相同的时间来返回结果,但是 As-you-type 会使键盘滞后。
我有 UISearchBar textDidChange 接受 searchText 并将其发送到执行所有 sqlite 提升的搜索方法,将结果放入数组中。重新加载表。
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{
if((searchType == SEARCH_AS_YOU_TYPE) && ([searchText length] >= 2)){
NSString *myKeyword = [NSString stringWithFormat:@"%@", searchText];
[self search:myKeyword];
[myTableView reloadData];
}
}
我将结果限制为 50。我的 SQL 查询使用 LIKE 和 OR,但目前还没有办法。
SELECT WORD_ID, DEFIN, PINYIN, SIMP, TRAD from WORDS where DEFIN LIKE "%to dog %" OR DEFIN LIKE "%dog" OR DEFIN LIKE "%dog%" ORDER BY DEFIN LIMIT 50
我还尝试将 [myTableView reloadData] 移动到搜索方法中,希望键盘至少不会滞后。没有喜悦。可悲的是,我知道当 sqlite 使用 like 运算符时,它基本上会检查每一行。但是 80 行的 3-4 秒似乎有点慢。
任何想法、想法、意见或建议将不胜感激!