Các UIWebView class reference không khuyến khích nhúng một UIWebView trong một UIScrollView:
Chú ý: Bạn không nên nhúng UIWebView hoặc UITableView đối tượng trong đối tượng UIScrollView. Nếu bạn làm như vậy, hành vi không mong muốn có thể dẫn đến kết quả là vì các sự kiện chạm cho hai đối tượng có thể được trộn lẫn và xử lý sai .
Tuy nhiên tôi cho rằng bạn vẫn muốn thực hiện chức năng của mình ;-)
Idea 1: Đừng nhúng UIWebView trong một UIScrollView, thay vì chạy javascript sử dụng phương pháp stringByEvaluatingJavaScriptFromString:
UIWebView của, sửa đổi DOM để thêm thanh công cụ bên dưới. Nếu được yêu cầu, bạn có thể gọi lại mã khách quan-c từ bất kỳ nút nào được đẩy trên thanh công cụ bằng cách đăng ký một số lược đồ URL tùy chỉnh.
Ý tưởng 2: Không nhúng UIWebView vào UIScrollView, nhưng trong UIView bình thường. Xây dựng dựa trên đề xuất của Vignesh, hãy lắng nghe số lần gọi lại của người xem trên webViewView scrollViewDidScroll:
qua đại biểu, kiểm tra chiều cao contentOffset
so với chiều cao contentSize
mỗi lần gọi lại. Một khi họ bằng nhau, nó có nghĩa là bạn đã xuống đáy. Khi điều này xảy ra, bạn có thể tạo hiệu ứng cho khung thanh công cụ của bạn để "nhập" UIView chứa và "đẩy" khung của webView đi.
Ý tưởng 3: Bỏ qua đề xuất của Apple và nhúng UIWebView vào UIScrollView. Xây dựng dựa trên đề xuất của Vignesh, hãy lắng nghe số lần gọi lại của người xem trên webViewView scrollViewDidScroll:
qua đại biểu, kiểm tra chiều cao contentOffset
so với chiều cao contentSize
mỗi lần gọi lại. Một khi họ bằng nhau, nó có nghĩa là bạn đã xuống đáy. Khi điều này xảy ra, hãy đặt thuộc tính userInteractionEnabled
của webView thành NO và đặt thành YES trên scrollView chứa webView và thanh công cụ. Hy vọng rằng cuộn sẽ tiếp tục trôi chảy đủ. Tất nhiên bạn phải nghe chế độ xem cuộn có chứa trong cùng một cách để xác định thời điểm chuyển đổi lại userInteractionEnabled
. Một biến thể trên ý tưởng này sẽ là chỉ cần đặt userInteractionEnabled
thành NO cho webView, nhưng đặt chiều cao của khung hình webView để phù hợp với nội dung của nóSize, và cũng có thể phóng to contentSize của scrollView có chứa cho phù hợp.
Cả hai biến thể đều có nhược điểm là trong một số trường hợp, bạn sẽ không thể thực hiện những việc như bấm vào liên kết :-(Nhưng có lẽ điều đó là đủ tốt cho trường hợp của bạn.