1

所以我有一个项目,其中一些内容显示在 WebView 中,我想坚持下去。我希望标题WebView 内容一起滚动。现在,WebView 通常想做它自己的滚动处理,但你可以告诉它不要使用:

[[webView mainFrame] setAllowsScrolling:NO];

这成功地使 WebView 的滚动条不出现。然而,尽管它嵌入在 NSScrollView 中,但 NSScrollView 的滚动条永远不会激活。我只能得出结论,需要告诉 WebView 调整大小,但我不知道该怎么做。我尝试了以下方法:

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

但这似乎也不起作用。

有什么建议么?

4

3 回答 3

0

我快速浏览了文档,这可能是一个愚蠢的问题;更改帧大小后,您是否向setNeedsDisplay视图发送消息?

于 2009-10-13T16:19:29.523 回答
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.
  }
}
于 2011-04-16T18:55:25.927 回答
0

替代解决方案:用 HTML/CSS/JavaScript 表示标题,并将真实内容放在 iframe 中怎么样?您可以遍历框架层次结构以找到该框架的 WebFrame 对象,并使用 DOM(可能由您自己的对象包装)来控制标头。

于 2009-10-14T03:34:59.113 回答