我的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是否可以滚动而不实际执行滚动并比较可见内容区域?
答案 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
}
}
到目前为止,这似乎是可靠的。