我有一个Webview,我想消除其弹性。就像现在一样,当滚动小于Web视图的页面时,它将产生弹性效果,从而露出下面的背景。我想删除它。

我尝试执行以下操作,但未成功。它找到WebDynamicScrollBarsView,但是设置它的弹性不会改变任何东西。

- (void)awakeFromNib
{
    NSScrollView *scrollView = [self findScrollViewInSubviews:self.subviews];
    scrollView.horizontalScrollElasticity = NSScrollElasticityNone;
    scrollView.verticalScrollElasticity = NSScrollElasticityNone;
}

- (NSScrollView *)findScrollViewInSubviews:(NSArray *)subviews
{
    for (NSView *view in subviews)
    {
        if ([view isKindOfClass:[NSScrollView class]])
            return (NSScrollView *) view;
        else
            return [self findScrollViewInSubviews:view.subviews];
    }

    return nil;
}


有谁知道如何消除Web视图的弹性效果?

最佳答案

在我的WebView子类中(或者您可以直接使用webView.mainFrame.frameView.documentView.enclosingScrollView进行此操作,但这对我来说更容易实现)

// return the scroll view that we are currently using, if applicatble
- (NSScrollView *)mainScrollView {
    return [[[[self mainFrame] frameView] documentView] enclosingScrollView]; // can be nil
}


然后在完成加载时,正如我在键入答案时,Anne所说的那样:

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {
    NSScrollView *mainScrollView = [sender mainScrollView];
    [mainScrollView setVerticalScrollElasticity:NSScrollElasticityNone];
    [mainScrollView setHorizontalScrollElasticity:NSScrollElasticityNone];
}


我不确定在加载内容后是否有必要这样做,但是我现在没有Mac可以尝试。

10-07 18:27