2010-08-09 54 views
2

我有一個嵌入在UIScrollView UIWebView。 webView被調整大小,以便滾動視圖管理所有的滾動(我需要控制滾動)。UIScrollView與嵌入式UIWebView後不滾動

在webView中,我通過'-webkit-user-select:none'禁用了userSelection。

除了一個煩人的細節,一切都工作正常。當我在開始滾動大約一秒之前按住內容時,scrollView將不會滾動。我最好的猜測是,它與用戶選擇有關。時間大致與複製/粘貼/放大顯示通常所需的時間相同,這通常也會禁用滾動。

我對如何解決這個問題的想法已經不多了。每一個幫助將不勝感激!

謝謝!

編輯:問題的另一個方面是,非滾動實際觸發JS-Eventhandler(單擊,mousedown,mouseup)在我的webView內導致令人驚訝的應用程序行爲。用戶放下手指,等待,滾動,沒有任何反應,移除她的手指,這被認爲是一種點擊,從用戶的角度來看,這種感覺是錯誤的。

+1

嗨,我試圖用UIScrollView內的UIWebView實現同樣的事情。你可以請你發表一些代碼樣本,你如何實現這一目標?乾杯, – 2011-06-22 14:25:37

回答

1

此問題已經無關。從iOS 5.0開始,UIWebView基於真實的UIScrollView,並通過屬性公開了該UIScrollView。改爲使用它。

並且不要再混淆UIScrollViews中嵌入的UIWebViews。文件明確建議不要這樣做。

Relevant Documentation

1

我猜想發生了什麼事情是在短暫的持續時間後,scrollview不再將觸摸解釋爲在視圖上,而是將觸摸傳遞給它的內容視圖。

您是否嘗試過延遲scrollview的內容?這將基本上告訴滾動視圖延遲對觸摸事件採取行動,而是短暫監視觸摸,並且如果觸摸移動,則它將其識別爲用於滾動的輕掃手勢。如果它不移動,它最終會將觸摸傳遞給它的子視圖。

scrollView.delaysContentTouches = YES; 

我認爲,即使這樣,在滾動視圖沿着響應者鏈傳遞觸摸事件之前有一個標準的延遲時間。如果持有時間過長,則自然會認爲它是按下事件,而不是滾動事件。

+0

delaysContentTouches已被設置爲YES。我沒有效果地切換它。 – 2010-08-09 15:01:12

+1

如果您上面關於捕獲點擊的網絡視圖的評論是正確的,則表示滾動視圖正沿着觸摸事件傳遞,因爲您在定時持續時間內沒有移動手指。這就是它應該做的,否則它將如何處理web視圖中的實際點擊?如果標準時間不夠長,你必須自己處理觸摸事件,這是一大堆蠕蟲。 – iwasrobbed 2010-08-09 15:12:03

+0

如果你不想讓webview處理觸摸,你應該將它的'userInteractionEnabled'設置爲NO。 – iwasrobbed 2010-08-09 15:19:34