Как мне встроить WebView в NSScrollView? - PullRequest
1 голос
/ 13 октября 2009

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

[[webView mainFrame] setAllowsScrolling:NO];

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

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

но это тоже не сработает.

Есть предложения?

Ответы [ 3 ]

0 голосов
/ 14 октября 2009

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

0 голосов
/ 16 апреля 2011

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

Сегодня я немного поиграл с классом 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.
  }
}
0 голосов
/ 13 октября 2009

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

...