的UIWebView class reference阻礙了對一個UIScrollView嵌入一個UIWebView:
重要:您不應該在 的UIScrollView對象嵌入的UIWebView或UITableView的對象。如果這樣做,可能會導致意外的行爲 ,因爲兩個對象的觸摸事件可能混淆並且錯誤地處理了 。
但是我想你還是想實現你的功能;-)
理念1:不要嵌入的UIWebView在一個UIScrollView,而不是使用一個UIWebView的stringByEvaluatingJavaScriptFromString:
方法運行JavaScript,修改DOM來添加下面的工具欄。如果需要,您可以通過註冊一些自定義URL方案,從工具欄上推送的任何按鈕回調Objective-C代碼。
想法2:不要將UIWebView嵌入到UIScrollView中,而是嵌入到普通的UIView中。基於Vignesh的建議,每次調用回調時,通過代理監聽webView的內部scrollView的scrollViewDidScroll:
回調,檢查contentOffset
與contentSize
的高度。一旦它們平等,就意味着你已經到了底部。一旦發生這種情況,您可以爲您的工具欄的框架設置動畫,以「輸入」包含的UIView並將webView的框架「推出」。
想法3:忽略Apple的建議,並將UIWebView嵌入到UIScrollView中。基於Vignesh的建議,每次調用回調時,通過代理監聽webView的內部scrollView的scrollViewDidScroll:
回調,檢查contentOffset
與contentSize
的高度。一旦它們平等,就意味着你已經到了底部。一旦發生這種情況,將webView的userInteractionEnabled
屬性設置爲NO,並將其設置爲包含webView和工具欄的scrollView上的YES。希望滾動能夠繼續順利進行。當然,您必須以相同的方式來聽取包含滾動視圖,以確定何時切換回userInteractionEnabled
。
這一理念的變化將只設置userInteractionEnabled
爲NO web視圖,但設置的WebView框的高度,以匹配其contentSize,並且也相應擴大含滾動視圖的contentSize。
這兩個變化都有缺點,在某些情況下,你將無法做到諸如點擊鏈接之類的事情:-(但對於你的情況來說,這可能已經足夠了,至少在第一個變體中它並不是那麼糟糕。