高度な検索機能を実装して、特定のテキストが検索バーに入力された場合、UITableviewのコンテンツのリストを検索に基づいてフィルタリングし、検索テキストの出現箇所を強調表示するようにしたいですか?アイデアを教えてください。
2 に答える
NSAttributedStringを使用...UILabel、UITextViewはNSAttributedStringをサポートしていないため、NSAttribute文字列を描画するUIControllerを検索します...
ここでコントローラーを入手します:https ://github.com/AliSoftware/Ali-Cocoa-Classes/tree/master/OHAttributedLabel
PS:iOS6のみのアプリケーションを配布する場合は、UILabelがNSAttributedStringをサポートするようになったため、OSでネイティブにサポートされるようになったため、OHAttributedLabelではなくUILabelを直接使用する必要があります。
私はこのようなことを自分で試したことはありませんが、私のアプローチは次のようになります。
textField:shouldChangeCharactersInRange:replacementString:
オブジェクトにメソッドを実装しUITextFieldDelegate
ます。このメソッドは、textFieldに入力または削除されたすべての文字に対して呼び出されます。上記のデリゲートメソッドでは、TextFieldの現在のテキストコンテンツに基づいて検索を実行し、結果のリスト(配列)を返します。
配列を取得し、結果ごとにカスタムUITableViewCellを作成します。このセルには、テキストが検索結果の抜粋であるUIWebViewが含まれている必要があります。
強調表示するには、WebViewでレンダリングしようとしているテキストでsearch-replaceを実行して、検索文字列(たとえば、foo)を見つけ、それを
<b>foo</b>
または適用したい他のHTML形式に置き換える必要があります。標準のNSStringAPIを使用- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
して、find-replaceを実行できます。
お役に立てれば。