【问题标题】:Get scroll position and extent for a Webview获取 Webview 的滚动位置和范围
【发布时间】:2014-12-05 16:55:02
【问题描述】:

我的 Mac OS X 应用程序 UI 中有一个 Webview 控件,我需要以某种方式确定控件中的内容是否可以滚动。也就是说,滚动位置是否在控件的末尾?

通过一些实验,我发现以下方法仅在某些时间起作用:

-(BOOL)canScroll
{
    NSScroller * scroll = self.mainFrame.frameView.documentView.enclosingScrollView.verticalScroller;
    return scroll.knobProportion > 0.0 && scroll.knobProportion < 1.0 && scroll.floatValue < 1.0;
}

但很多时候不是这样。我无法确定它应该在什么情况下工作,并且网络上的文档含糊不清。有人可以推荐一种可靠的方法来确定 Webview 是否可以在不实际执行滚动和比较可见内容区域的情况下滚动?

【问题讨论】:

    标签: macos cocoa webview


    【解决方案1】:

    我尝试做类似的事情并开始尝试是否存在滚动条。这导致了这种方法,尽管我必须警告这纯粹是凭经验定义的。

    func canScroll() -> Bool {
        guard let scroll = self.mainFrame.frameView.documentView.enclosingScrollView?.verticalScroller else { return false }
        let knobProportion = scroll.knobProportion
        let floatValue = scroll.floatValue
        if scroll.usableParts == .noScrollerParts {
            return floatValue < 1.0 && floatValue != 0.0
        } else {
            return knobProportion > 0.0 && knobProportion < 1.0 && floatValue < 1.0
        }
    }
    

    到目前为止,这似乎工作可靠。

    【讨论】:

      猜你喜欢
      • 2017-08-01
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多