9

我想实现高级搜索功能,以便如果在搜索栏中键入特定文本,则应根据搜索过滤 UITableview 中的内容列表,然后突出显示搜索文本出现?请给我一些想法?

4

2 回答 2

13

使用 NSAttributedString... 查找绘制 NSAttribute 字符串的 UIController,因为 UILabel、UITextView 不支持 NSAttributedString...

在此处获取控制器:https ://github.com/AliSoftware/Ali-Cocoa-Classes/tree/master/OHAttributedLabel

PS:如果你计划发布一个 iOS6-only 应用程序,因为 UILabel 现在支持 NSAttributedString,你应该直接使用 UILabel 而不是 OHAttributedLabel,因为它现在被操作系统原生支持。

于 2010-11-17T19:29:13.280 回答
0

我自己没有尝试过这样的事情,但我的方法如下:

  1. textField:shouldChangeCharactersInRange:replacementString:在您的UITextFieldDelegate对象中实现该方法。这个方法会被从你的 textField 中输入或删除的每个字符调用。

  2. 在上述委托方法中,根据 TextField 中的当前文本内容,执行搜索并返回结果列表(数组)。

  3. 获取数组并为每个结果构造一个自定义 UITableViewCell。此单元格应该有一个 UIWebView,其文本是您的搜索结果的摘录。

  4. 对于突出显示,您需要在即将在 WebView 中呈现的文本中执行搜索替换以查找搜索字符串,例如 foo,并将其替换为<b>foo</b>您可能希望应用的任何其他 HTML 格式。您可以使用标准的 NSString API - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement来进行查找替换。

希望这可以帮助。

于 2010-11-26T14:08:40.297 回答