2012-01-30 31 views

回答

62

這個工作對我來說:

UIScrollView *scrollView = [webView.subviews objectAtIndex:0]; 
scrollView.delegate = self;//self must be UIScrollViewDelegate 

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { 
    return nil; 
} 

更新:對於iOS 5或更高版本獲得滾動視圖這樣的:

webview.scrollView.delegate = self; 
+0

優秀的解決方案,完美的工作,並在方法中使用if語句,您可以選擇返回'nil'或將消息轉發到'super',在這種情況下,縮放會重新啓用(具體取決於您顯示的內容)。 – 2012-03-05 13:07:17

+4

從iOS 5開始,您可以使用'webView.scrollView.delegate = self;'。 – Dev 2012-11-16 14:20:02

+0

非常感謝你真的幫了我很多! – 2013-01-07 12:29:09

4

UIWebView有財產叫scrollView。通過它你可以定義這個。 更具體地講,應該是這樣的:

myWebView.scrollView.minimumZoomScale = 1.0; 
myWebView.scrollView.maximumZoomScale = 1.0; 
+2

錯變焦,即使你設置縮放級別爲1仍然存在。0 – 2012-01-30 10:19:42

+4

這實際上工作,如果放在' - (void)webViewDidFinishLoad:(UIWebView *)webView'的webview的委託功能 – 2014-02-28 16:13:43

+1

對不起,這只是不適用於我,即使放在webViewDidFinishLoad。 – 2014-03-07 05:22:45

3

Apple Documentation

scalesPageToFit

一個布爾值,確定網頁是否縮放以適應視圖 和用戶可以更改比例。

@屬性(非原子)BOOL scalesPageToFit

討論

如果是,則網頁被縮放以適合並且用戶可以放大和縮小 出來。如果否,則禁用用戶縮放。默認值是NO。

所以如果你想改變這種行爲,你可能必須繼承UIWebView。

2

編輯: 實現委託方法

- (void)webViewDidFinishLoad:(UIWebView *)webView 

爲您的Web視圖,並在其中添加如下因素代碼:

[webView stringByEvaluatingJavaScriptFromString: @"$('body').bind('touchmove', function(event) { event.preventDefault() });"]; 

的問題是,這也禁用滾動,因爲它禁止的舉動觸摸。 如果你想保持滾動你必須寫一個java腳本,將覆蓋與視meta標籤:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> 
+0

沒有幫助,仍然是可縮放的 – Jim 2012-01-30 13:25:45

+0

看來你是寫,我正在尋找一個解決方案,我會編輯 – 2012-01-30 13:53:38

+0

這對我在iOS 5中工作。 – 2012-06-01 05:11:27

12

而不是使用

的0

您可以使用此:

webview.scrollView.delegate = self; 

-(UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView { 
return nil; 
} 

第二個選項是更好,完全證明。第一個邏輯在未來的SDK中可能會失敗。

0

所以它的工作原理我:

NSString *fullURL = @"http://google.com"; 
NSURL *url = [NSURL URLWithString:fullURL]; 
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url]; 
_webView.scrollView.scrollEnabled = TRUE; 
_webView.contentMode = UIViewContentModeScaleAspectFit; 
_webView.scalesPageToFit = FALSE; 
[_webView loadRequest:requestObj];