macos - 去除 webview 的弹性

标签 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 的弹性效果吗?

最佳答案

在我的 WebView 子类中(或者您可以直接使用 webView.mainFrame.frameView.documentView.enendingScrollView 来完成,但这对我个人来说更容易)

// 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];
}

我不确定是否有必要在内容加载后执行此操作,但我现在没有 Mac 可以尝试。

关于macos - 去除 webview 的弹性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11170038/

相关文章:

macos - 如何更改 NSSearchField 的背景颜色(例如 OS X 中的消息应用程序)

macos - 将旧代码从 OS X 10.6 更新到 10.7

objective-c - NSKeyedArchiver:如何归档包含自定义结构的 NSValue

ios - 重启 View Controller

android - WebView 内存不足异常

macos - 单击时显示 NSUserNotification 附加操作

objective-c - 如何打开带有 "popup"动画的NSWindow

cocoa - 在 Mac 应用程序中启动新窗口

java - 允许通知 Android webview

iOS 8.1 杀死了我的 WebView 的一部分。把招工广告