2010-02-28 29 views
8

Tôi có một số UIWebview được tải dưới dạng chế độ xem phụ khi người dùng chọn một tab trên UISegmentedControl. Vì một lý do nào đó, tôi không thể lấy nó để cho phép pinch/zooming. Tôi đặt mã sau trong phương thức viewDidLoad:, vì vậy nó sẽ hoạt động.UIWebview sẽ không thu phóng ngay cả sau khi cài đặt scalesPageToFit thành YES

self.myWebView = [[[UIWebView alloc] initWithFrame:self.view.frame] autorelease]; 
self.myWebView.backgroundColor = [UIColor whiteColor]; 
self.myWebView.scalesPageToFit = YES; 
self.myWebView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight); 
self.myWebView.delegate = self; 
[self.view addSubview: myWebView]; 

tôi đã cố gắng tải một UIWebView từ một NIB và tạo ra nó lập trình với vô ích. Có cái gì tôi đang mất tích? Điều gì có thể khiến webview bỏ qua véo và thu phóng?

Cảm ơn!

+0

'scalesPageToFit = YES' nó hoạt động nhưng nó thay đổi kích thước nội dung mặc định của bạn, [Nhìn vào câu trả lời của tôi điều này sẽ hữu ích cho bạn.] (Http://stackoverflow.com/questions/7134576/enable-zooming-pinch -on-uiwebview/23971234 # 23971234) – iPatel

Trả lời

6

Tôi thấy bạn đang đặt autoresizingMask. Điều đó có nghĩa là bạn đã tạo ra UIWebView với kích thước ban đầu là CGRectZero? Bạn có thể tương tác với tài liệu không? Ý tôi là, việc di chuyển/khai thác có hoạt động không?

+0

Tôi đã thêm một đoạn mã mà trước đây tôi đã bỏ qua. Tôi đã thử gỡ bỏ phần autoresizingMask mà không có sự khác biệt.Có, mọi thứ khác hoạt động hoàn hảo. – Jonah

+0

Điều gì về việc thử một trang web khác? Để loại trừ trang bạn đang thử nghiệm có một số cấu hình để không cho phép pinch/zoom. (Điều này có thể bị ảnh hưởng bởi trang) –

+0

Bạn đúng. Tôi chỉ tải các trang wikipedia và vì một lý do nào đó họ không cho phép phóng to. Bất kỳ ý tưởng tại sao họ không? Cảm ơn! – Jonah

1

Bạn phải bật đa chạm. Pinch liên quan đến nhiều hơn một ngón tay trên màn hình:

[myWebView setMultipleTouchEnabled:YES]

+0

Đó không phải là vấn đề. Multitouch được bật theo mặc định. Dường như có một số loại mã trong trang web di động wikipedia đã ngăn không cho nó phóng to. Nó hoạt động tốt trên tất cả các trang web khác. – Jonah

9
[webView stringByEvaluatingJavaScriptFromString:@"document.body.style.zoom = 5.0;"]; 

dường như là giải pháp phù hợp

+1

tuyệt vời! đó là những gì tôi muốn. +1 – Joey

+1

Giải pháp tuyệt vời !! Đó là những gì tôi đang tìm kiếm .... Thanx Vaibhav – Anshul

+1

@Vaibhav Saran nó sẽ không hoạt động khi bạn véo WebView và xoay thiết bị. – Kamarshad

7

tôi giải quyết này với thiết lập một cổng xem:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.5; user-scalable=1"/> 

Chúc may mắn

5

Theo kinh nghiệm của tôi, bạn cần đặt scalesPageToFit trước UIWebView tải. Điều này có nghĩa thiết lập trước khi viewDidLoad vv Những gì tôi làm là cài đặt nó trong "shouldStartLoadWithRequest"

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    //make sure that the page scales when it is loaded :-) 
    theWebView.scalesPageToFit = YES; 
    return YES; 
} 

giải thích của tôi về các tài liệu là tài sản scalesPageToFit mệnh lệnh cách trang SẼ được nạp. Nó không thay đổi mọi thứ sau khi thực tế.

Hy vọng điều này sẽ hữu ích.

2

FYI:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.5; user-scalable=1"/> 

công trình nhưng

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.5; user-scalable=YES"/> 

không trên iPhone. Tài liệu hướng dẫn sử dụng có/không. Tôi đoán trường hợp quan trọng trong trường hợp này. Trong obj-c các giá trị là YES/NO và 1/0

1

Đây là những gì Apple đề xuất trong tham chiếu lớp webview.

Quan trọng: Bạn không được nhúng đối tượng UIWebView hoặc UITableView vào đối tượng UIScrollView. Nếu bạn làm như vậy, hành vi không mong muốn có thể xảy ra do các sự kiện chạm cho hai đối tượng có thể được trộn lẫn và xử lý sai.

Các vấn đề liên quan