Чтобы выполнить прямой поиск в текстовом представлении, используйте следующий фрагмент -
NSRange textRange;
NSRange searchRange = NSMakeRange(0, [textView.text length]);
textRange = [textView.text rangeOfString:searchString
options:NSCaseInsensitiveSearch
range:searchRange];
if ( textRange.location == NSNotFound ) {
// Not there
} else {
textView.selectedRange = textRange;
[textView scrollRangeToVisible:textRange];
}
В основном мы используем метод NSString
s rangeOfString:options:range:
, чтобы найти текст, а затемвыделите текст с помощью selectedRange
и сделайте его видимым с помощью scrollRangeToVisible:
.
Теперь, когда найден, вы можете найти следующее вхождение, изменив диапазон поиска.
if ( textRange.location + textRange.length <= [textView.text length] ) {
searchRange.location = textRange.location + textRange.length;
searchRange.length = [textView.text length] - searchRange.location;
textRange = [textView.text rangeOfString:searchString
options:NSCaseInsensitiveSearch
range:searchRange];
/* Validate search result & highlight the text */
} else {
// No more text to search.
}
Вы также можете искать в обратном направлении, объявив
searchRange = NSMakeRange(0, textRange.location);
и затем передав (NSCaseInsensitiveSearch|NSBackwardsSearch)
в options
.