在TextView中searchstring的出现次数
我有一个大文本的textview,我想find一个string(search)里面的所有事件,每次我按search滚动textView到当前出现的范围。
谢谢
要在文本视图上进行前向search,请使用以下代码段 –
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
的rangeOfString:options:range:
方法来查找文本,然后使用selectedRange
高亮显示文本,并使用scrollRangeToVisible:
使其可见。
现在一旦发现,您可以通过修改search范围来find下一个事件。
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. }
您也可以通过声明向后search
searchRange = NSMakeRange(0, textRange.location);
然后在options
传递(NSCaseInsensitiveSearch|NSBackwardsSearch)
。