Я хочу реализовать функцию расширенного поиска, чтобы при вводе определенного текста в строке поиска список содержимого в UITableview должен быть отфильтрован на основе поиска, а затем должны быть выделены события поиска текста? Пожалуйста, дайте мне несколько идей?
Внедрение расширенного поиска в iphone?
Ответы (2)
Используйте NSAttributedString ... Найдите UIControllers, которые рисуют строку NSAttribute, потому что UILabel, UITextView не поддерживает NSAttributedString ...
Получите контроллер здесь: https://github.com/AliSoftware/Ali-Cocoa-Classes/tree/master/OHAttributedLabel
PS: если вы планируете распространять приложение только для iOS6, поскольку UILabel теперь поддерживает NSAttributedString, вам следует использовать UILabel напрямую вместо OHAttributedLabel, поскольку теперь он изначально поддерживается ОС.
Я сам не пробовал ничего подобного, но мой подход будет следующим:
Реализуйте метод
textField:shouldChangeCharactersInRange:replacementString:
в своемUITextFieldDelegate
объекте. Этот метод будет вызываться для каждого символа, который вводится или удаляется из вашего текстового поля.В указанном выше методе делегата на основе текущего текстового содержимого в TextField выполните поиск и верните список (массив) результатов.
Возьмите массив и для каждого результата создайте собственный UITableViewCell. В этой ячейке должен быть UIWebView, текст которого представляет собой отрывок из результата поиска.
Для выделения вам необходимо выполнить поиск-замену в тексте, который вы собираетесь отобразить в WebView, чтобы найти строку поиска, например, foo, и заменить ее на
<b>foo</b>
или любое другое форматирование HTML, которое вы можете применить. Вы можете использовать стандартный NSString API- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
для поиска и замены.
Надеюсь это поможет.