Как сделать так, чтобы NSTextFinder отображался

У меня есть приложение для Mac Cocoa с веб-представлением, которое содержит некоторый текст. Я хотел бы выполнить поиск по этому тексту, используя панель поиска по умолчанию, предоставленную NSTextFinder. Как бы легко это ни звучало, читая ссылку на класс NSTextFinder, я не могу отобразить панель поиска. Что мне не хватает?

В качестве примечания.:
-Да, я попытался установить для findBarContainer другое представление, то же самое. Я вернулся к представлению прокрутки, чтобы упростить отладку
-PerformTextFinderAction вызывается для выполнения операции поиска

**App Delegate:**

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{

    self.textFinderController = [[NSTextFinder alloc] init];

    self.webView = [[STEWebView alloc] initWithFrame:CGRectMake(0, 0,  self.window.frame.size.width, 200)];
    [[self.window contentView] addSubview:self.webView];

    [self.textFinderController setClient:self.webView];
    [self.textFinderController setFindBarContainer:self.webView.enclosingScrollView];


    [[self.webView mainFrame] loadHTMLString:@"sample string" baseURL:NULL];

}

- (IBAction)performTextFinderAction:(id)sender {
    [self.textFinderController performAction:[sender tag]];
}

**STEWebView**

@interface STEWebView : WebView <NSTextFinderClient>

@end


@implementation STEWebView

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

    }

    return self;
}

- (void)drawRect:(NSRect)dirtyRect
{
    // Drawing code here.
}


- (NSUInteger) stringLength {
    return [[self stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"] length];
}

- (NSString *)string {
    return [self stringByEvaluatingJavaScriptFromString:@"document.documentElement.textContent"];
}
6
задан Lukasz 7 May 2012 в 22:01
поделиться