从webview中消除弹性

时间:2012-06-23 13:52:26

标签: macos cocoa webview

我有一个webview,我想从中消除弹性。就像现在一样,当滚动小于webview的页面时,它会产生弹性效果,显示下面的背景。我想删除它。

我尝试过以下但没有成功。它找到了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;
}

有谁知道如何从webview中删除弹性效果?

1 个答案:

答案 0 :(得分:6)

在我的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
}

然后在完成加载时,正如安妮在输入我的答案时字面意思那样:),

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

我不确定在内容加载后是否需要这样做,但我现在没有和我一起试用。