如何使用单个参数从Javascript调用Objective-C方法并在Xcode中处理它
我不熟悉这种应用程序。有人能帮我满足我的要求吗。 我有一个iPad应用程序,其中javascript使用参数调用本机函数。我在webview shouldStartLoadWithRequest…delegate方法中得到了相同的结果。我能够调用从javascript发送的本机函数,但当函数带有参数时,如何获取函数和参数。 请引导我 在下面张贴代码如何使用单个参数从Javascript调用Objective-C方法并在Xcode中处理它,javascript,ios,ipad,webview,native,Javascript,Ios,Ipad,Webview,Native,我不熟悉这种应用程序。有人能帮我满足我的要求吗。 我有一个iPad应用程序,其中javascript使用参数调用本机函数。我在webview shouldStartLoadWithRequest…delegate方法中得到了相同的结果。我能够调用从javascript发送的本机函数,但当函数带有参数时,如何获取函数和参数。 请引导我 在下面张贴代码 window.location.href = "js2ios://getNotiData(" +groupId + ")"; 首先,来自JS的调
window.location.href = "js2ios://getNotiData(" +groupId + ")";
首先,来自JS的调用应该是:
window.location.href = "js2ios://getNotiData?groupId=XXX
然后,在包含UIWebView的UIViewController中,需要为web视图添加一个名为:UIWebViewDelegate的委派。以下方法对您来说很重要:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSString *urlString = [[request URL] absoluteString];
if ([urlString hasPrefix:@"js2ios:"]) {
NSURLComponents *urlComponents = [NSURLComponents componentsWithURL:request.url resolvingAgainstBaseURL:NO];
NSArray *queryItems = urlComponents.queryItems;
NSString *param1 = [self valueForKey:@"groupId" fromQueryItems:queryItems];
// NOW CALL YOUR OBJECTIVE-C METHOD WITH param1 !
return NO;
}
}
非常感谢你的回答。我尝试了下面的方法,我相信你的是最好的代码。我也在发布我的代码。NSArray*urlArray=[urlStr componentsSeparatedByString:@?];NSString*参数字符串;如果[URLARY count]>1{paramsString=[URLARY objectAtIndex:1];}NSString*strGroupid=@groupId=;paramsString=[paramsString substringFromIndex:[strGroupid长度]];