【问题标题】:Disable rubber-band scrolling for webview in lion禁用lion中webview的橡皮筋滚动
【发布时间】:2011-10-24 15:38:22
【问题描述】:

我有一个 Cocoa webview,里面有一个 web 应用程序。 Web 应用程序本身有一个固定的工具栏,并且具有弹性滚动,并且工具栏位于顶部下方,看起来很糟糕。有没有办法禁用弹性/橡皮筋滚动,或者至少阻止工具栏与其余内容一起移动?我可以根据需要修改网络应用程序。

【问题讨论】:

  • 这是一个很难找到的问题和答案,也很难解释。我正在搜索“可可 webkit 弹跳效果”,但没有找到。不得不尝试另一个关键字“cocoa webkit scroll”。我很高兴你发布了它。我想建议删除 osx-lion 标签,因为它适用于所有 OSX,并且也从问题标题中删除“in lion”。这将使其他人更容易找到这个重要的问题和答案。此外,来自 briangonzalez 的一条线固定了我,而不是您选择的答案。这也比 kizu 的回答更容易。

标签: html macos webview osx-lion


【解决方案1】:

也许this article 会帮助你。

简而言之:在HTMLBODY 上禁用overflow,在所有页面内容周围添加一个带有overflow:auto 的包装器

【讨论】:

  • 注意:jQuery UI 对话框总是附加到body,因此您需要将它们重新添加到您的内容 div 中才能正常工作。
【解决方案2】:

如果您有兴趣从WebView 和 Cocoa 的角度进行操作,您还可以实现完成加载委托、抓取滚动视图并禁用弹性:

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

【讨论】:

  • 这是从 Cocoa 的角度来看的,这就是问题所在。使用 JavaScript/HTML 只能在自定义页面上轻松使用。
  • 你能多说一下为什么这个特定的委托方法吗?为什么不呢,例如,在资源加载委托中,甚至在 awakeFromNib 中?
【解决方案3】:

我知道这个评论可能不会被接受,因为已经有了答案。

但是,您可以在NSView(文档here)上调用一个实际的方法:

[[[webView mainFrame] frameView] setAllowsScrolling:NO]; 

【讨论】:

  • 这可以防止任何滚动,包括不滚动 WebView 内的内容,例如带有滚动条的 div。 OP 的问题只是关闭 WebView 的“反弹”效果。 Vervious 的答案在这种情况下可以正常工作。
  • 从 Google 来到这里。虽然这并不能回答所提出的问题,但这正是我来这里寻找的……+1
  • @asgeo1 这不是真的。我从我的 AppDelegate 的 applicationDidFinishLaunching 运行了这段代码,并且有滚动的 div 和 iframe。他们工作得很好。这行代码修复了弹跳效果,让我的 webkit 应用看起来更像一个应用,而不是一个网页。
猜你喜欢
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多