Tôi đã sử dụng UIWebView để hiển thị nội dung động, thay vì thực hiện nó một cách tự nhiên bằng cách sử dụng các phần tử giao diện người dùng. Có thể kích hoạt chức năng ứng dụng gốc từ chỉ cần nhấn các liên kết bên trong UIWebView không? Ví dụ: nhấn vào liên kết sau đó chuyển Chế độ xem hiện tại?UIWebView có thể tương tác (giao tiếp) với ứng dụng không?
Trả lời
Có, có thể. Trong html của bạn, bạn viết một JS để tải một URL với một chương trình giả mạo như
window.location = "request_for_action://anything/that/is/a/valid/url/can/go/here";
Sau đó, trong mã iOS của bạn, gán một đại biểu để WebView của bạn, và trong đại biểu của bạn, xử lý
webView:shouldLoadWithRequest:navigationType
với một cái gì đó giống như
if([request.URL.scheme isEqualToString: @"request_for_action"])
{
// parse your custom URL to extract parameter, use URL parts or query string as you like
return NO; // return NO, so webView won't actually try to load this fake request
}
-
Chỉ cần một sang một bên, bạn có thể làm theo cách khác, chúng ta hãy iOS đồng de gọi một số mã JS trong html của bạn bằng cách sử dụng
NSString* returnValue = [self.webView stringByEvaluatingJavaScriptFromString: "someJSFunction()"];
Có! Khi người dùng nhấn một liên kết, bạn sẽ nghe về nó trong ủy nhiệm của web view và sau đó có thể làm bất cứ điều gì bạn muốn. Công cụ mạnh mẽ có thể được thực hiện theo cách này.
Đại biểu của chế độ xem web được gửi webView:shouldStartLoadWithRequest:navigationType:
. Bạn phân tích những gì đã xảy ra, và đáp ứng như bạn muốn. Để ngăn chặn xem web từ cố gắng để làm theo các liên kết (có thể hoàn toàn giả mạo, sau khi tất cả), chỉ cần trả lại NO.
Trong ví dụ này từ ứng dụng Tin tức TidBITS, tôi có một liên kết trong trang Web sử dụng sơ đồ play:
được tạo thành hoàn toàn. Tôi phát hiện thấy rằng trong đại biểu và chơi:
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)r
navigationType:(UIWebViewNavigationType)nt {
if ([r.URL.scheme isEqualToString: @"play"]) {
[self doPlay:nil];
return NO;
}
if (nt == UIWebViewNavigationTypeLinkClicked) {
[[UIApplication sharedApplication] openURL:r.URL];
return NO;
}
return YES;
}
Thực hiện phương thức UIWebViewDelegate
webView:shouldStartLoadWithRequest:navigationType:
.
Xử lý điều hướng Loại và yêu cầu nếu cần.
Tôi đã thiết lập các đại biểu và thực hiện các phương pháp đại biểu uiwebview. Nhưng không có phương thức đại biểu nào của tôi được gọi khi tôi nhấp vào một số nội dung uiwebview. Không có gọi lại. Cần làm gì? – iPhoneDeveloper
@iPhoneDeveloper Bạn nên đăng câu hỏi của riêng bạn với tất cả các chi tiết liên quan. – rmaddy
- 1. Có thể tương tác với UIWebView mà không cần chạm không?
- 2. Có thể sử dụng C++ để tương tác với các ứng dụng đang chạy không?
- 3. Ứng dụng CLI tương tác với Python?
- 4. Silverlight có thể giao tiếp với nhạc cụ MIDI không?
- 5. API giao tiếp nối tiếp cho Java trên hệ thống 64 bit (tương tác modem)
- 6. Giao tiếp thời gian thực dựa trên web có tương thích với mô hình REST không?
- 7. Có thể Selenium tương tác với phiên trình duyệt hiện tại không?
- 8. Giao tiếp giữa các ứng dụng?
- 9. Sử dụng ZeroMQ trong ứng dụng web: cách lối vào tương tác với phần phụ trợ
- 10. Giao tiếp giữa các ứng dụng Rails
- 11. Tôi có thể sử dụng xác thực proxy tương tác với git-svn không?
- 12. Nhập dữ liệu vào ứng dụng dòng lệnh tương tác
- 13. Giao tiếp WCF với nhiều khách hàng không có IIS
- 14. Sử dụng C# để tương tác với Windows Update
- 15. Giao diện C cho bash tương tác
- 16. Màn hình cào một cửa sổ ứng dụng và tương tác với chuột và bàn phím
- 17. Nhà nước-of-the-nghệ thuật để nhúng SVG tương tác có thể viết, tương tác trong các ứng dụng Gtk +?
- 18. Có thể xây dựng một vỏ C tương tác không?
- 19. Tôi có thể sử dụng IPython trong giao diện điều khiển Python tương tác được nhúng không?
- 20. Tương tác với Django/Celery Từ Java
- 21. Java có thể tương tác với hàng đợi tin nhắn System V linux không?
- 22. Bạn có thể yêu cầu UIWebView sử dụng kiểu chỉ báo màu trắng không?
- 23. Làm cách nào tôi có thể tương tác với các phần tử đằng sau ứng dụng Android mờ?
- 24. Biểu đồ tương tác cho ứng dụng web
- 25. Tương tác với ứng dụng bảng điều khiển Windows qua Python
- 26. Có thể liên kết lệnh trực tiếp với nút thanh ứng dụng không?
- 27. Tương tác với SVN từ appengine
- 28. sử dụng chương trình phụ trợ tương tác và không tương tác trong một chương trình
- 29. Tại sao "Không" có tác dụng tương tự như "np.newaxis"?
- 30. Giao tiếp giữa nhiều ứng dụng web bằng SignalR
Có vẻ chính xác những gì tôi cần thực hiện. Nhưng tôi không thể tìm ra nơi nào tôi đặt phương pháp này? Cảm ơn câu trả lời mô tả, nhân tiện! –
Bạn đặt nó ở bất cứ đâu đại diện của UIWebView! – matt
Alwesome, công trình này! :) Một câu hỏi nữa: tại sao khi tôi nhấp vào liên kết với lược đồ url được xác định trước, ứng dụng sẽ chuyển hướng đến Safari và cố gắng mở nó? –