Objective-cとjsの相互呼び出しとパラメータの注意
1626 ワード
1、Objective-cでjsメソッドを呼び出すには、uiwebviewの持参方法を呼び出すだけでいいです.
ここで特に注意すべき問題:ここでhtmlフォーマットのパラメータを伝えました.ここで会ったのですが、昔のパラメータはずっと違っていて、jsのメソッドを呼び出すことができませんでした.
stingWithContints OfFileは、この方法でファイルを読み込むために使われています.符号化方式を指定しないと、データの損失を招く恐れがあります.だから、utf-8の符号化方式を指定しました.パラメータを伝える時、まだ可能な問題があります.このパラメータには(\r')などが含まれていますが、jsの方ではこの値が使えません.これらのバンドの意味が変わります.以下のようにjsを書くと完全なメッセージが届きます.
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString(‘%@’)",htmlStr]];
2、jsはObjective-c方法を呼び出します.この時はjsとパラメータや方法を約束しなければなりません.- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
このフィードバック方法では、サーバーからのデータrequestを取得します.私たちは着てきたパラメータを判断して、ocを呼び出す方法を判断します. if ([request.URL.scheme isEqualToString:@"gethtmlstring"]) {
NSString *htmlStr = [self getHtmlString:description];
htmlStr = [htmlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString(\"%@\")",htmlStr]];
}
これにより、オリコンへの呼び出しが実現されました.ここで特に注意すべき問題:ここでhtmlフォーマットのパラメータを伝えました.ここで会ったのですが、昔のパラメータはずっと違っていて、jsのメソッドを呼び出すことができませんでした.
stingWithContints OfFileは、この方法でファイルを読み込むために使われています.符号化方式を指定しないと、データの損失を招く恐れがあります.だから、utf-8の符号化方式を指定しました.パラメータを伝える時、まだ可能な問題があります.このパラメータには(\r')などが含まれていますが、jsの方ではこの値が使えません.これらのバンドの意味が変わります.以下のようにjsを書くと完全なメッセージが届きます.
message = [message stringByReplacingOccurrencesOfString:@"
" withString:@"\\\
"];
NSString *jsMethod = [NSString stringWithFormat:@"JsMethod(\"%@\")", message]
例コード:http://download.csdn.net/detail/pearlhuzhu/5550141