Tôi có một số UIWebView
tải lên một trang HTML. Trang này có hai nút trên đó, nói Exit và Submit. Tôi không muốn người dùng có thể nhấp vào nút Thoát, vì vậy khi trang tải xong (ví dụ: webViewDidFinishLoad
được gọi), tôi sử dụng stringByEvaluatingJavaScriptFromString
để xóa một trong các nút này bằng cách thao tác HTML. Tôi cũng vô hiệu hóa tương tác của người dùng trên UIWebView
trên webViewDidStartLoad
và bật lại tính năng này trên webViewDidFinishLoad
.Xác định khi stringByEvaluatingJavaScriptFromString đã hoàn tất
Vấn đề tôi đang tìm kiếm là stringByEvaluatingJavaScriptFromString
mất một hoặc hai giây để hoàn thành và dường như được thực hiện trong chuỗi riêng của nó. Vì vậy, những gì đang xảy ra là webViewDidFinishLoad
được gọi, tương tác người dùng được bật trên UIWebView
và nếu người dùng nhanh chóng, họ có thể nhấp vào nút Thoát trước khi stringByEvaluatingJavaScriptFromString
kết thúc. Khi stringByEvaluatingJavaScriptFromString
có vẻ là chủ đề riêng của nó mà không có cách nào để biết khi nào nó kết thúc (nó không gọi là webViewDidFinishLoad
), cách duy nhất để ngăn chặn hoàn toàn người dùng nhấn nút Thoát mà tôi có thể thấy là chỉ cho phép tương tác người dùng trên UIWebView sau một số chậm trễ, đó là không đáng tin cậy (làm thế nào tôi có thể thực sự biết bao lâu để trì hoãn?).
Tôi có chính xác trong đó stringByEvaluatingJavaScriptFromString
được thực hiện trên chỉ trên luồng và tôi không có cách nào để có thể biết khi nào nó kết thúc? Bất kỳ đề xuất nào khác về cách giải quyết vấn đề này?
EDIT: Nói tóm lại, những gì tôi muốn biết là nếu nó có thể vô hiệu hóa một UIWebView
khi stringByEvaluatingJavaScriptFromString
đang thực hiện, và hãy bật lại UIWebView
khi javascript xong.
EDIT 2: Có một bài viết ở đây mà dường như ngụ ý bạn bằng cách nào đó có thể thăm dò ý kiến các cơ JS để xem khi nó đã hoàn thành, nhưng tôi không thể tìm thấy bất kỳ tài liệu tham khảo khác nói cùng một điều: http://drnicwilliams.com/2008/11/10/to-webkit-or-not-to-webkit-within-your-iphone-app/
EDIT 3 Dựa trên câu trả lời từ Brad Smith, có vẻ như tôi thực sự cần phải biết khi nào UIWebView đã tải xong sau khi javascript đã được thực hiện. Nó trông ngày càng nhiều hơn như tôi chỉ cần đặt một sự chậm trễ của các loại trong đó.
cùng một vấn đề ở đây! Giải pháp của bạn là gì? –
Tôi tin rằng tôi đã phải nghỉ mát để chỉ giả định rằng sẽ mất một khoảng thời gian nhất định và trì hoãn quá trình xử lý của tôi ít nhất khoảng thời gian đó. –
Cùng một vấn đề. Ouch, phải có cách tốt hơn để làm điều này. –