在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]; } 

基本上我们使用NSStringrangeOfString: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)