Làm cách nào tôi có thể bật phóng to trên UIWebView bên trong UIScrollView?


132

Tôi có một UIWebViewcái bên trong UIScrollView(scrollview chứa thành phần khác)

Tôi đã cố gắng bật đa cảm ứng trên Trình tạo giao diện hoặc Lập trình trên UIWebViewnhưng nó vẫn không thể phóng to cho html, tôi có cần xử lý cả phóng to tại UIScrollViewUIWebViewkhông? Hoặc bất cứ điều gì tôi chưa đặt?


2
scalesPageToFit = YESnó hoạt động nhưng nó thay đổi kích thước nội dung mặc định của bạn, hãy xem câu trả lời của tôi điều này sẽ hữu ích cho bạn.
iPatel

Câu trả lời:


348

Bạn PHẢI đặt scalePageToFit = CÓ cho bất kỳ độ chụm và thu phóng nào để hoạt động trên UIWebView


2
Điều này là tốt, ngoại trừ bây giờ trang của tôi đang được thu nhỏ lại để phù hợp với chế độ xem. Tôi đang tạo một trang html bằng mã để hiển thị và tôi muốn nó vẫn ở kích thước trước đó, nhưng cho phép người dùng của tôi phóng to với thu phóng pinch
Dan F

33
Thêm thẻ meta sau vào đầu tài liệu HTML của bạn: <meta name = 'viewport' content = '
init

2
Làm thế nào tôi có thể làm điều tương tự với một trang web bên ngoài? Đó là, tôi đặt thu phóng ban đầu và thu phóng người dùng được bật sau đó.
William Jockusch

Xin chào, tất cả đều hoạt động tốt Paging, ZoomIn / Out, v.v ... Nhưng tôi có một vấn đề trong đó. Ứng dụng của tôi hoạt động theo cả hai hướng (Chân dung & Phong cảnh). Bây giờ, trong chân dung, tôi phải vuốt trang 2-3 lần sau đó tôi có thể đi đến trang tiếp theo. Nhưng trong phong cảnh, nó hoạt động tốt. Tôi đã xem webview trong scrollview và scrollview có phân trang. Nhưng khi tôi cố gắng cuộn cuộn để sang trang tiếp theo, thì tôi phải vuốt nó 2 đến 3 lần để sang trang tiếp theo (ở chế độ dọc). Bất kỳ ý tưởng liên quan đến cùng. Cảm ơn đã giúp đỡ.
Nishant B

câu trả lời hoàn hảo ... Cảm ơn
ALI

12

OK, bạn cần phải làm cả hai điều trên, nhưng cũng có thể sau đây. Tôi đã có một lượt xem web ở chế độ xem chính và điều đó không hiệu quả.

  1. Như trên, trước tiên bạn phải đặt UIScrollView trong chế độ xem chính, sau đó đặt chế độ xem web trong chế độ xem cuộn.
  2. Như trên, triển khai <UIScrollViewDelegate>trong trình điều khiển chế độ xem của bạn, kéo đại biểu chế độ xem cuộn sang trình điều khiển chế độ xem trong Trình tạo giao diện và triển khai viewForZoomingInScrollViewphương thức. Điều này phải trả con trỏ về UIScrollView (trả về myScrollView).
  3. Tôi đã tạo các thuộc tính IBOutlet cho cả chế độ xem web và chế độ xem cuộn - liên kết chúng trong NIB với bộ điều khiển xem của bạn.
  4. Trên Chế độ xem cuộn, hãy chuyển đến Trình theo dõi thuộc tính, đặt các hệ số thu phóng tối đa và tối thiểu của bạn (Tôi đặt 0,5 đến 5,0, hoạt động tốt).
  5. Trên Chế độ xem web, trong Trình theo dõi thuộc tính:
  6. Trong phần Web View, chọn Scales Pages To Fit
  7. Trong phần Xem, chọn cho Chế độ, "Trên cùng bên trái"
  8. Trong phần Xem ở phía dưới, hãy kiểm tra Kích hoạt tương tác người dùng và Kích hoạt nhiều chạm

3

Với JavaScript, bạn có thể kiểm soát mức thu phóng, mặc dù giải pháp oly mà tôi thấy không có vẻ mượt mà.

Nói rằng bạn có trong <head>:

<meta id="vp" name="viewport" content="width=768,initial-scale=1.0">

Để thu phóng lên 4x và vẫn cho phép người dùng thay đổi thu phóng, hãy thay đổi nội dung hai lần:

var vp = document.getElementById('vp');
vp.content = "width=767,minimum-scale=4.0,maximum-scale=4.0,user-scalable=yes";
vp.content = "width=768,minimum-scale=0.25,maximum-scale=10.0,user-scalable=yes";

Thay đổi chiều rộng là rất quan trọng - nếu không, Mobile Safari có lỗi phát hiện lại nghiêm trọng (do tối ưu hóa quá mức).

Bạn không thể chỉ thiết lập initial-scalelại - nó bị bỏ qua lần thứ hai.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.