2011-02-14 53 views
0

我有一個iphone UIWebView的內容是大約1000px x 200px。目前,當用手指滾動時,它會垂直反彈,但不會水平。獲取UIWebView滾動和水平反彈但不垂直

我想讓它做相反的事:水平反彈但不垂直。

是否有一些技巧我需要在我的html做到這一點?例如明確設置身體的寬度和高度也許?或者它是UIWebView的設置?我可以做到以下幾點,完全禁用彈跳,有沒有類似的設置每個方向的彈跳?

[[[webView subviews] lastObject] setBounces:NO]; 

非常感謝您的幫助

回答

0

你可以嘗試添加CSS樣式表,並與您的視圖的尺寸設置一個div容器。並將styleSheet應用於您的UIWebView。

你可以那樣做 -

NSString *cssPath = [[NSBundle mainBundle] pathForResource:@"style" ofType:@"css"]; 

     //do base url for css 
     NSString *path = [[NSBundle mainBundle] bundlePath]; 
     NSURL *baseURL = [NSURL fileURLWithPath:path]; 

     NSString *html =[NSString stringWithFormat:@"<!DOCTYPE html><html><head><link rel=\"stylesheet\" href=\"%@\" type=\"text/css\" /></head><body><section></section><br><br></body></html>",,cssPath]; 
     [webView loadHTMLString:html baseURL:baseURL]; 
0

您可以通過所有的UIWebViews中的子視圖週期(使用for循環)逐項檢查,看它是否是一個UIScrollView(使用isMemberOfClass:),然後更改屬性在UIScrollView中滿足您的需求。

for (UIView *subview in [myWebView subviews]) { 
    if ([subview isMemberOfClass:[UIScrollView class]]) { 
     [(UIScrollView *)subview setAlwaysBounceVertical:NO]; 
     [(UIScrollView *)subview setAlwaysBounceHorizontal:YES]; 
    } 
} 
+0

謝謝,我看到了這些屬性,並給了他們一個嘗試,但它沒有幫助。 – Chris 2011-02-14 21:23:51

+0

而不是`isMemberOfClass`嘗試`isKindOfClass` – 2011-02-14 21:38:35

5

在iOS 5中,您不需要訪問子視圖。 UIWebView包含scrollView屬性嵌套的UIScrollView:

要禁用反彈:

webView.scrollView.bounces = NO; 

要只反彈垂直:

webView.scrollView.alwaysBounceVertical = NO; 
webView.scrollView.alwaysBounceHorizontal = YES; 
0

你總是可以做到:

for (UIView *subview in [self.webView subviews]) { 
    SEL sel = @selector(setAlwaysBounceHorizontal:); 
    if([subview respondsToSelector:sel]){ 
     [subview performSelector:sel withObject:(id)YES]; 
    } 
} 

在您的viewDidLoad