2010-04-05 42 views

Trả lời

62

Trong đại biểu của UIWebView của bạn, làm:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if ([[[request URL] scheme] isEqual:@"mailto"]) { 
     [[UIApplication sharedApplication] openURL:[request URL]]; 
     return NO; 
    } 
    return YES; 
} 
+0

Trong Swift 4 'func WebView (_ WebView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if (request.url .scheme == "mailto"?) { UIApplication.shared.open (request.url) .... ' –

33

tôi nhận thấy rằng khi chạy trong mô phỏng iPhone, tôi có thể nhấp chuột vào một liên kết HTTP trong UIWebView của tôi và nó sẽ mở trong Safari, nhưng khi tôi nhấp vào một liên kết mailto không có gì xảy ra. Nhưng khi tôi triển khai ứng dụng cho một thiết bị thực, nó hoạt động. Tôi hy vọng lý do là vì không có ứng dụng thư trên trình mô phỏng, nhưng có Safari.

+3

Không có ứng dụng email nào trên Trình mô phỏng iOS. D'oh! Điều đó không bao giờ vượt qua tâm trí của tôi. Cảm ơn bạn đã kết thúc sự nhầm lẫn và thất vọng của tôi. –

2

Tôi muốn lưu ý rằng đây có lẽ không phải là giải pháp tốt nhất.

UIWebView không có một tài sản gọi là dataDetectorTypes - thiết lập này cho tất cả hoặc địa chỉ nên giải quyết vấn đề của bạn mà không trọng dụng phương pháp nêu trên:

myWebView.dataDetectorTypes = UIDataDetectorTypeAll; //or UIDataDetectorTypeAddress etc.. 

Nhưng lưu ý rằng điều này có thể không hoạt động trên các mô phỏng - Tôi cố gắng nó với iPad 6.0 Simulator, nơi nó không hoạt động mặc dù trên một thiết bị iPad nó hoạt động như một sự quyến rũ!

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