2014-12-05 26 views
1

我的Mac OS X应用程序UI中有一个Webview控件,我需要以某种方式确定控件中的内容是否可以滚动。换句话说,是在控制结束时的滚动位置?获取Webview的滚动位置和范围

对于一些实验,我发现了以下工作只是的时间有些

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

但是它的很多没有时间。我无法确定它应该在哪些环境下工作,并且Web上的文档含糊不清。有人可以推荐一种可靠的方法来确定Webview是否可以滚动而不实际执行滚动并比较可见内容区域?

回答

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

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