2017-01-06 22 views
10

Tôi nhận thấy rằng [UIWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:] chỉ được gọi với các liên kết <a href="..."> truyền thống và không phải là điều hướng JavaScript ứng dụng web trang duy nhất.Cách nghe chính xác các thay đổi điều hướng trên UIWebView?

Ví dụ: nếu tôi truy cập m.facebook.com trong UIWebView và bắt đầu nhấn vào điều hướng trên cùng (xem ảnh chụp màn hình bên dưới), nó sẽ không bao giờ kích hoạt phương thức ủy nhiệm.

Lý do tôi muốn một phương pháp để nối vào là vì tôi muốn thêm các nút quay lại và chuyển tiếp phía trên UIWebView nhưng tôi cần biết khi nào nên bật/tắt các nút đó. Có một số phương pháp đại biểu khác tôi nên sử dụng để nghe chính xác các thay đổi điều hướng không?

Cập nhật: Tôi cũng lưu ý rằng Safari di động cập nhật chính xác trạng thái nút quay lại/chuyển tiếp trên trang web di động của Facebook, vì vậy tôi hy vọng Apple cũng sẽ đưa ra cách để nhà phát triển thực hiện việc này.

enter image description here

+0

Bạn đã xem '[UIWebView có thểGoBack] 'chưa? https://developer.apple.com/reference/uikit/uiwebview/1617931-cangoback – SergGr

+0

@SergGr không giúp tôi vì tôi cần một số móc khi có thay đổi điều hướng để biết khi nào nên gọi canGoBack –

Trả lời

5

Dường như thế này chỉ đơn giản là không được hỗ trợ bởi UIWebViewDelegate, cũng không WKNavigationDelegate (mà tôi chỉ thử nghiệm với facebook). Có một số tùy chọn được liệt kê trong this answer:

  1. javascript tiêm để nắm bắt những thay đổi trang (đọc lên trên history.pushState).
  2. KVO để xem các thay đổi đối với chế độ xem web (như chỉnh lại kích thước cuộn)
  3. xem thay đổi tiêu đề, như trên.
  4. kiểm tra các bản cập nhật mỗi lần người dùng nhấn vào chế độ xem.

Cập nhật

Tôi cũng đã cố gắng this answer trên facebook, trong đó bao gồm tiêm javascript để bắt XMLHttpRequests trong mỗi tải trang mới. Nó loại làm những gì bạn đang yêu cầu, nhưng là một chút của một hack. Một số tab facebook không hoạt động đúng cách với việc triển khai rất đơn giản, nhưng bạn có thể giải quyết được vấn đề.

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