lib/ProMotion/web/ui_web_screen_module.rb
module ProMotion
module UIWebScreenModule
def web_view_setup
self.webview = add UIWebView.new, {
frame: CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height),
delegate: self,
data_detector_types: data_detector_types
}
self.webview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
self.webview.scalesPageToFit = self.scale_to_fit
self.webview.scrollView.decelerationRate = UIScrollViewDecelerationRateNormal
end
def evaluate(js)
self.webview.stringByEvaluatingJavaScriptFromString(js)
end
def evaluate_async(js, &block)
Dispatch::Queue.concurrent.async do
result = evaluate(js)
Dispatch::Queue.main.async do
block.call result
end
end
end
def go_to_item(item)
# self.webview.goToBackForwardListItem(item)
PM.logger.warn "`go_to_item` is not implemented with the older UIWebView, which doesn't support it."
false
end
def back_forward_list
# self.webview.backForwardList
PM.logger.warn "`back_forward_list` is not implemented with the older UIWebView, which doesn't support it."
false
end
def progress
# self.webview.estimatedProgress
PM.logger.warn "`progress` is not implemented with the older UIWebView, which doesn't support it."
false
end
# CocoaTouch methods
def webView(in_web, shouldStartLoadWithRequest:in_request, navigationType:in_type)
if %w(http https).include?(in_request.URL.scheme)
if self.external_links == true && in_type == UIWebViewNavigationTypeLinkClicked
if defined?(OpenInChromeController)
open_in_chrome in_request
else
open_in_safari in_request
end
return false # don't allow the web view to load the link.
end
end
load_request_enable = true #return true on default for local file loading.
load_request_enable = !!on_request(in_request, in_type) if self.respond_to?(:on_request)
load_request_enable
end
def webViewDidStartLoad(webView)
load_started if self.respond_to?(:load_started)
end
def webViewDidFinishLoad(webView)
load_finished if self.respond_to?(:load_finished)
end
def webView(webView, didFailLoadWithError:error)
load_failed(error) if self.respond_to?("load_failed:")
end
end
end