У меня есть приложение для 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"];
}