2011-08-18 37 views
7

Tôi đang trình bày một cách bình thường UIViewController với chế độ xem là UIWebView. Làm cách nào để loại bỏ số UIWebView khi người dùng nhấn vào nút hủy trên đó?Làm thế nào để hủy bỏ một UIWebView?

Một ý tưởng tôi có là phải có nút liên kết huỷ để http://cancel và sau đó kiểm tra trong

- (void)webViewDidStartLoad:(UIWebView *)webView 

Nếu webView.request.URL.host isEqualToString:@"cancel", sau đó bỏ qua bộ điều khiển xem.

Máy chủ lưu trữ phải có dấu chấm trong đó, ví dụ: "cancel.com"?

Trả lời

8

Bạn đang đi đúng hướng, nhưng cách tiếp cận của bạn hơi bị tắt. Bạn không cần hoặc muốn đây là một URL HTTP. Đặt URL của bạn cancel:.

<a href="cancel:">Thing to click</a> 

Sau đó, triển khai webView:shouldStartLoadWithRequest:navigationType: trong ủy quyền xem web của bạn. Một cái gì đó như thế này (chưa được kiểm tra):

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if ([request.URL.scheme isEqualToString:@"cancel"]) { 
     [self dismissModalViewControllerAnimated:YES]; 
     return NO; 
    } 
    return YES; 
} 
+0

Cảm ơn! Tôi đã nghĩ đến việc sử dụng '-webView: shouldStartLoadWithRequest:' thay vì chỉ sau khi đăng bài nhưng không được chỉnh sửa câu hỏi. Sử dụng lược đồ của URL là tốt hơn. Ngọt! – ma11hew28

+0

Đây chính xác là những gì tôi đang tìm kiếm. Câu trả lời chính xác. Cảm ơn! – venj

6

Không hoàn toàn rõ ràng nếu bạn muốn dừng tải trong chế độ xem web hoặc chỉ loại bỏ trình điều khiển chế độ xem có chứa nó.

Để dừng tải:

[webView stopLoading]; 

Để bỏ qua bộ điều khiển xem:

[self dismissModalViewControllerAnimated:YES]; 

Đừng quên để thiết lập xem web của delegate để nil trước khi bạn phát hành nó.

+0

+1 vì đây là cách tốt hơn để thực hiện ngay cả khi tất cả những gì bạn muốn là loại bỏ trình điều khiển chế độ xem. Tôi đã gặp sự cố với ứng dụng bị lỗi nếu webView vẫn đang cố tải trong nền sau khi trình điều khiển chế độ xem bị loại bỏ. – Sepui

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