その投稿を参照してください
http://blog.techno-barje.fr/post/2010/10/06/UIWebView-secrets-part3-How-to-properly-call-ObjectiveC-from-Javascript/
JavascriptからObjective-Cを呼び出す方法は?
スクリプトを使用してUIWebViewに文字列を送信できます
function sendURLToUIWebView(url) {
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", url);
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
}
あなたのURLには特定のスキームfeが必要ですmyappcomand://
メソッドでそれを処理できますUIWebViewDelegate
(UIWebViewのデリゲートとしていくつかのオブジェクトを設定し、いくつかのUIViewControllerを使用します)
- (BOOL)webView:(UIWebView *)aWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
BOOL shouldLoad = YES;
if ([request.URL.scheme isEqualToString:@"myappcomand"]) {
shouldLoad = NO;
// parse url string "request.URL" and extract your parameters to store them
}
return shouldLoad;
}
あなたのJavaScript関数
function sendURLToUIWebView(url) {
var iframe = document.createElement("IFRAME");
iframe.setAttribute("src", url);
document.documentElement.appendChild(iframe);
iframe.parentNode.removeChild(iframe);
}
function getRangeForSelectedText() {
var selection = window.getSelection();
var range = selection.getRangeAt(0);
var url = "myappcomand://" + "range=" + range; // you should convert range to string
sendURLToUIWebView(url);
}
アップデート:
範囲から文字列
range.toString().replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, '')
あるいは単にvar rangeText = window.getSelection().toString();
range.toString() の奇妙な動作を参照してください。