获取Webview的滚动位置和范围

时间:2014-12-05 16:55:03

标签: macos cocoa webview

我的Mac OS X应用程序用户界面中有一个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是否可以滚动而不实际执行滚动并比较可见内容区域?

1 个答案:

答案 0 :(得分:0)

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

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
    }
}

到目前为止,这似乎是可靠的。