2011-02-18 58 views
0

當UIWebview嵌入到UIScrollview中時,我有一個關於UIWebview中的javascript和touch事件的問題。在UIScrollview中嵌入的UIWebview中的Javascript觸發事件

UIScrollview有許多視圖(爲簡單起見,我將稱它們爲「子視圖」)。每個子視圖都是iPad屏幕的大小,向左/向右滑動應該在下一個/上一個子視圖上移動。其中一個子視圖是一個UIWebview,其中我正在運行一個使用觸摸事件的小型JavaScript應用程序,另外在某些情況下還使用iScroll組件。

不幸的是,UIWebview嵌入在UIScrollview(蘋果不推薦的做法:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html - 請參閱標記爲「重要」的方框)內的事實不在我的手中。

我遇到的問題是關於在UIWebview子視圖中滑動時的觸摸事件。 如果我加載谷歌主頁,例如刷卡工作正常,下一個子視圖進入視圖。但是,當我加載其中一個JS應用程序時,滑動不起作用。

我假設UIWebview組件獲取觸摸事件並將它們傳遞給它內部的Javascript,以便它可以做出相應的響應。它是否也將它們傳播回UIScrollview?還是由JavaScript代碼來確保它不會在事件中「停止傳播」?任何有關如何協調這些事件的信息將非常感謝。

最後,我是一名JavaScript程序員,並且不是Objective-C程序員,雖然我理解它的基礎知識,即我已經通過Objective-C視頻的Stanford iTunes iOS系列中的一小部分,並編寫了一些演示,但就是這樣。

非常感謝您的時間。

回答

0

失敗的頁面是否比UIWebView更寬?如果將scalesPageToFit屬性設置爲YES並禁用UIWebView使用的內部UIScrollView上的反彈,則應解決該問題。

您可以使用以下方法來禁用反彈:

for (UIView *view in webView.subviews) { 
    if (![[view class] isSubclassOfClass:[UIScrollView class]]) continue; 
    ((UIScrollView *)view).bounces = NO; 
    break; 
} 

有關App Store的審批無擔保雖然,因爲我只用這對於未通過App Store的應用程序分發。

+0

謝謝吉姆,工作過一種享受! – grookle 2011-03-03 10:31:33