2010-05-14 34 views
11

Tôi rất tò mò nếu có cách phát hiện thay đổi của trang web được hiển thị bên trong một số UIWebView. Trong một ứng dụng tôi đang làm việc trên chúng tôi đang sử dụng UIWebView để trình bày một phần chức năng cơ bản là một vài bước mà người dùng cần tuân theo. Tuy nhiên, sẽ là một trang cụ thể ở cuối các bước mà tôi cần phải xác định và sau đó ứng dụng cần hiển thị một chế độ xem khác.Nhận thông báo về thay đổi trang trong UIWebView

Thật không may, UIWebViewDelegate dường như không thực hiện được thủ thuật.

Mọi mẹo về điều đó?

Have a nice weekend và nhờ
-f

Trả lời

21

Nếu các bước sử dụng được tách ra trên các trang khác nhau, và UIWebView nhu cầu để tải các bước khác nhau, điều này thực sự nên có thể với các phương pháp đại biểu.

Trong ví dụ này, chúng ta nói rằng người dùng phải trải qua 3 bước, tên step1.htm, step2.htm và cuối cùng step3.htm. Mã này sẽ phát hiện khi người dùng đạt đến bước thứ ba và cuối cùng.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSString *URLString = [[request URL] absoluteString]; 
    if ([URLString isEqualToString:@"http://www.example.com/step3.htm"]) { 
     // The user reached step 3! 
    } 
    return YES; 
} 

Lưu ý rằng sử dụng phương pháp absoluteString có thể không phải là cách tốt nhất để tìm ra nơi người dùng đang duyệt. Hãy xem query, path, parameterString, v.v ...

+0

Oh bằng cách nào đó tôi đã bỏ lỡ điều đó. Cảm ơn, đó là chính xác những gì tôi đã tìm kiếm! – flohei

+1

Có cách nào để nhận thông báo khi trang mới hoàn tất tải không? (phương thức này được gọi trước khi nó bắt đầu tải) – Stan

+1

Để làm cho nó hoàn thành, bạn sẽ cần phải nhận được ủy quyền cho webView như: trong ViewController.m: self.myWeview.delegate = self; và trong ViewController.h: @interface ViewController: UIViewController turzifer

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