我有一个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可以尝试。