【问题标题】:Advance search implementation in iphone?iphone中的高级搜索实现?
【发布时间】:2012-10-17 12:33:49
【问题描述】:

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

【问题讨论】:

    标签: iphone uitableview nsattributedstring


    【解决方案1】:

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

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

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

    【讨论】:

    • 我找不到 NSAttributed 字符串的控制器
    • 因将我们指向您的代码的大型存储库而不是直接回答而投反对票。
    【解决方案2】:

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

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

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 首先我也尝试过使用 UIwebView 但加载需要很长时间,所以我切换到了这个。不,它更快,看起来很棒..
    猜你喜欢
    • 2021-10-13
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2016-03-20
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多