所以我有一个项目,其中有一些内容显示在WebView中,我想坚持下去。我希望标题滚动与 WebView内容。现在,WebView通常希望自己进行滚动处理,但您可以告诉它不要使用:
[[webView mainFrame] setAllowsScrolling:NO];
成功地使WebView的滚动条不显示。但是,尽管它嵌入在NSScrollView中,但NSScrollView的滚动条永远不会激活。我只能得出结论,需要告诉WebView调整大小,但我无法弄清楚如何做到这一点。我尝试过以下方法:
NSRect webViewBounds = [webView bounds];
[webView setFrameSize:webViewBounds.size];
但这似乎也不起作用。
有什么建议吗?
答案 0 :(得分:0)
我快速浏览了这个文档,可能是一个愚蠢的问题;更改帧大小后,您是否向视图发送了setNeedsDisplay
消息?
答案 1 :(得分:0)
替代解决方案:如何在HTML / CSS / JavaScript中表达标头,并将真实内容放在iframe中?您可以遍历框架层次结构以查找该框架的WebFrame对象,并使用DOM(可能由您自己的对象包装)来控制标头。
答案 2 :(得分: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.
}
}