-2

可能重复:
我想在 UIWebView 上突出显示文本

在调用-[UIWebView highlightAllOccurencesOfString:]. 选择器在 WBHighlight.h 中声明,我在 WBSecondViewController.h 中使用前向声明。

WBSecondViewController.h

@class WBHighlight;
#import <UIKit/UIKit.h>
@interface WBSecondViewController : UIViewController <UIWebViewDelegate, UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet WBHighlight *webView;
- (IBAction)searchButtonPressed:(id)sender;
- (IBAction)clearHighlights:(id)sender;
@end

WBSecondViewController.m

#import "WBSecondViewController.h"
#import "WBHighlight.h"
@interface WBSecondViewController ()
@end
@implementation WBSecondViewController
-(IBAction)searchButtonPressed:(id)sender{
    NSLog(@"highlighttes");
    [_webView highlightAllOccurencesOfString:@"cat"];
}

-(IBAction)clearHighlights:(id)sender{
    [_webView removeAllHighlights];
}

WBHighlight.h

#import <UIKit/UIKit.h>

@interface WBHighlight : UIWebView{
}
- (NSInteger)highlightAllOccurencesOfString:(NSString*)str;
- (void)removeAllHighlights;
@end

WBHighlight.m

#import "WBHighlight.h"
- (NSInteger)highlightAllOccurencesOfString:(NSString*)str
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"UIWebViewSearch" ofType:@"js"];
    NSString *jsCode = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
    [self stringByEvaluatingJavaScriptFromString:jsCode];

    NSString *startSearch = [NSString stringWithFormat:@"uiWebview_HighlightAllOccurencesOfString('%@')",str];
    [self stringByEvaluatingJavaScriptFromString:startSearch];

    NSString *result = [self stringByEvaluatingJavaScriptFromString:@"uiWebview_SearchResultCount"];
    return [result integerValue];
}

- (void)removeAllHighlights
{
    [self stringByEvaluatingJavaScriptFromString:@"uiWebview_RemoveAllHighlights()"];
}
@end

任何的想法?

4

2 回答 2

2

此问题是由于您将WBHighlight插座连接到UIWebView.

可能是在其中声明和定义方法WBHighlight的子类。此方法在 standard 中不存在,这就是为什么它会引发错误,例如:unrecognized selector sent to instanceUIWebViewhighlightAllOccurencesOfString:UIWebView

您需要在界面生成器中将类更改UIWebView为。WBHighlight

  1. 去找你的身份检查员
  2. 选择您的网络视图
  3. 将 UIWebView 的类更改为WBHighlight

身份检查员的班级变更

于 2012-12-03T11:17:27.530 回答
0

Hekiru,您需要制作 WBHighlight 的对象才能调用该方法。而且,为此,您需要导入该类并制作对象。

比方说,

WBHighlight *objWBHighlight = [WBHighlight new];

//Then, call that required method:

int someVarToAssign = [objWBHighlight highlightAllOccurencesOfString:@"fsfsf"];

希望,它会解决你的问题。试试吧。

如有任何疑问,请告诉我。:)

于 2012-12-03T10:26:03.287 回答