9

高度な検索機能を実装して、特定のテキストが検索バーに入力された場合、UITableviewのコンテンツのリストを検索に基づいてフィルタリングし、検索テキストの出現箇所を強調表示するようにしたいですか?アイデアを教えてください。

4

2 に答える 2

13

NSAttributedStringを使用...UILabel、UITextViewはNSAttributedStringをサポートしていないため、NSAttribute文字列を描画するUIControllerを検索します...

ここでコントローラーを入手します:https ://github.com/AliSoftware/Ali-Cocoa-Classes/tree/master/OHAttributedLabel

PS:iOS6のみのアプリケーションを配布する場合は、UILabelがNSAttributedStringをサポートするようになったため、OSでネイティブにサポートされるようになったため、OHAttributedLabelではなくUILabelを直接使用する必要があります。

于 2010-11-17T19:29:13.280 に答える
0

私はこのようなことを自分で試したことはありませんが、私のアプローチは次のようになります。

  1. textField:shouldChangeCharactersInRange:replacementString:オブジェクトにメソッドを実装しUITextFieldDelegateます。このメソッドは、textFieldに入力または削除されたすべての文字に対して呼び出されます。

  2. 上記のデリゲートメソッドでは、TextFieldの現在のテキストコンテンツに基づいて検索を実行し、結果のリスト(配列)を返します。

  3. 配列を取得し、結果ごとにカスタムUITableViewCellを作成します。このセルには、テキストが検索結果の抜粋であるUIWebViewが含まれている必要があります。

  4. 強調表示するには、WebViewでレンダリングしようとしているテキストでsearch-replaceを実行して、検索文字列(たとえば、foo)を見つけ、それを<b>foo</b>または適用したい他のHTML形式に置き換える必要があります。標準のNSStringAPIを使用 - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacementして、find-replaceを実行できます。

お役に立てれば。

于 2010-11-26T14:08:40.297 に答える