2010-12-07 37 views
2

以編程方式縮放UIWebView我有一個UIWebView,我需要以編程方式縮放。通過在我的基於xib的視圖中解決其UIScrollView

由於UIWebView沒有自己的縮放方法,我發現Max的post建議獲取UIWebViews UIScrollView並將縮放級別發送到該縮放級別。

以我視圖控制器的viewDidLoad方法我因此確定的UIScrollView如下:

- (void)viewDidLoad { 
    // set iVars (both are IBOutlets) 
    iWebView.delegate = self; 
    iScrollView = [[iWebView subviews] objectAtIndex:0]; 

    iScrollview.minimumZoomScale = 0.2; 
    iScrollview.maximumZoomScale = 4.0; 
    iScrollview.zoomScale = iScrollview.minimumZoomScale; 

NSLog(@"webViewDidFinishLoad: Current %.3f, Min %.3f, Max %.3f", 
      iMapScrollView.zoomScale, iMapScrollView.minimumZoomScale, iMapScrollView.maximumZoomScale); 
    ... 
} 

的UIWebView的(默認)含有1000x2000px PNG文件。該的NSLog顯示

webViewDidFinishLoad: Current 0.200, Min 0.200, Max 4.000 

麻煩來當我嘗試更新iScrollView.zoomLevel新的縮放因子(可以說2.4):

- (void)setPositionWithZoom:(float)xPos down:(float)yPos zoomScale:(float)mZoomScale { 
    iScrollView.zoomScale = mZoomScale; 
    NSLog(@"setPositionWithZoom: mZoomScale %.3f Current %.3f, Min %.3f, Max %.3f", 
      mZoomScale , iMapScrollView.zoomScale, iMapScrollView.minimumZoomScale, iMapScrollView.maximumZoomScale); 
    ... 
} 

的的NSLog顯示:

setPositionWithZoom: mZoomScale 2.400 mCurrent 1.000 Min 1.000 Max 1.000 

所以縮放級別重置爲1,因爲最小/最大縮放級別神祕地回落到該值。

我驚慌失措,任何線索?


編輯:進一步調查把我帶到了一個觸摸的方法,我從一個UIWindow子類調用轉發觸摸事件(執行Mithins recipe爲抓觸摸事件與UIWebViews中)。

這是當我的viewController中的這個方法(myWebViewTouchesEnded)被調用,價值被消滅。我不知道爲什麼。

PATCH:我申請一個簡單的補丁來定義高德2,我用它來設置最小/最大zoomScales回到我的自定義值內myWebViewTouchesEnded和evrything工程...

回答

0

試試這個:

for (UIScrollView *scroll in [myPDFView subviews]) 
{ 
    //Set the zoom level. 

    [scroll setZoomScale:2.5f animated:YES]; 
} 
0

你是不是指在你的NSLog語句中使用iScrollView而不是iMapScrollView?

請注意,UIWebView通過zoomScale,minimumZoomScale和maximumZoomScale來做一些事情。

例如:

當加載與scalesPageToFit一個文件: 如果文件是PDF,分鐘... = 1個...最大= 32和zoomScale = 1,當縮小,zoomScale改變適當地和分鐘...和最大...保持不變。

如果文件是Excel文件,min ... = 1 max ... =某個數字N並且zoomScale = 1當您縮放時,zoomScale保持= 1,而max ...和min ...更改,例如設置zoomScale = 2和zoomScale將= 1,min ...將= 1/2和max ...將= N/2

編輯:此問題與Excel文件適用只有當您用縮放手勢放大。

相關問題