2014-12-05 58 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 
    } 
} 

這似乎到目前爲止工作可靠。