在iphone中推进搜索实施?

时间:2010-11-17 19:25:07

标签: iphone uitableview nsattributedstring

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

2 个答案:

答案 0 :(得分:13)

使用NSAttributedString ...查找绘制NSAttribute String的UIControllers,因为UILabel,UITextView不支持NSAttributedString ...

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

PS:如果您计划分发仅支持iOS6的应用程序,因为UILabel现在支持NSAttributedString,您应该直接使用UILabel而不是OHAttributedLabel,因为它现在已经被操作系统本机支持。

答案 1 :(得分: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进行查找替换。

  5. 希望这有帮助。