2009-10-13 5 views
1

Итак, у меня есть проект, в котором есть содержимое, отображаемое в WebView, и я хочу придерживаться этого. Я хочу, чтобы заголовок прокручивал с содержимым WebView. Теперь, WebView обычно хочет сделать это самостоятельно регулировать прокрутки, но вы можете сказать, это не использовать:Как встроить WebView в NSScrollView?

[[webView mainFrame] setAllowsScrolling:NO]; 

, который успешно делает полосы прокрутки в WebView не появляются. Однако, несмотря на то, что он встроен в NSScrollView, полосы прокрутки NSScrollView никогда не активируются. Я могу только сделать вывод, что WebView нужно изменить размер, но я не могу понять, как это сделать. Я пробовал следующее:

NSRect webViewBounds = [webView bounds]; 
[webView setFrameSize:webViewBounds.size]; 

, но это также не работает.

Любые предложения?

ответ

0

Альтернативное решение: как насчет выражения заголовка в HTML/CSS/JavaScript и размещения реального содержимого в iframe? Вы можете пересечь иерархию кадров, чтобы найти объект WebFrame для этого фрейма, и использовать DOM (возможно, завернутый вашим собственным объектом) для управления заголовком.

+0

Да, я думал об этом. Кажется, что kludge, но если это то, что нужно ... =) – Benno

0

Я быстро просмотрел документы для этого, возможно, глупый вопрос; после изменения размера фрейма вы отправляете сообщение setNeedsDisplay на просмотр?

+0

Да, я. Нет разницы. Я подозреваю, что проблема может заключаться в том, что размер WebView зависит от размера, который я дал ему в Interface Builder. Я не уверен, как сказать, что она может быть такой большой, как она хочет, и как узнать, насколько большой может быть данный контент. Я бы просто попробовал дать ему огромный вертикальный размер и посмотреть, как это происходит. – Benno

0

Границы и рамки в вашем коде должны иметь одинаковый размер. Установка одного на другое ничего не меняет.

Сегодня я немного поиграл с классом WebView. С моим подходом вам не нужно будет добавлять свой заголовок в код HTML. Регистрация для уведомления дает отправную точку:

[[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(webViewDidScroll:) 
    name:NSViewBoundsDidChangeNotification object:nil]; 

Затем вы можете проверить класс отправителя уведомлений (давайте предположим, что у вас есть только один WebView):

- (void)webViewDidScroll:(NSNotification *)aNotification 
{ 
    if ([[aNotification object] isKindOfClass:NSClassFromString(@"WebClipView")]) 
    { 
    // Do whatever you like; scroll your header etc. 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^