Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用原生Objective-C方法从本地HTML5文件中的javascript函数调用原生Objective-C方法,反之亦然?_Javascript_Objective C_Xcode - Fatal编程技术网

如何使用原生Objective-C方法从本地HTML5文件中的javascript函数调用原生Objective-C方法,反之亦然?

如何使用原生Objective-C方法从本地HTML5文件中的javascript函数调用原生Objective-C方法,反之亦然?,javascript,objective-c,xcode,Javascript,Objective C,Xcode,我想调用如下JavaScript函数: - (void)alertMe:(NSString *)msg { [[[UIAlertView alloc] initWithTitle:@"Alert" message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show]; } 及 如果HTML文件加载到XCode中的UIWebView中,我如何使用XCode调用它?使用委托方法UIWebView -(BOOL)w

我想调用如下JavaScript函数:

- (void)alertMe:(NSString *)msg {
[[[UIAlertView alloc] initWithTitle:@"Alert" message:msg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
}


如果HTML文件加载到XCode中的UIWebView中,我如何使用XCode调用它?使用委托方法UIWebView

-(BOOL)webView:(UIWebView*)webView应该加载请求:(NSURLRequest*)请求导航类型:(UIWebView导航类型)导航类型


为javascript函数实现查询字符串

您可能希望为javascript函数实现查询字符串,例如:

function getQueryString(){ 
var mySearch = window.location.search.substr(1).split("&");

     if (mySearch!="") 
     {
          for(var x=0;x<mySearch.length;x++) {
                // loop to all your query string here
          }

     }
}//end function
Bu此方法只能在
webViewDidFinishLoad:(UIWebView*)webView
中调用和/或在
webView:(UIWebView*)中调用时,webView应加载WithRequest:(NSURLRequest*)请求导航类型:(UIWebViewNavigationType)navigationType
方法返回的
必须是

,您可以使用它轻松实现从
JavaScript
调用本机
Objective-C
方法。 更方便的方法是实现一个类,该类包含
JS
将调用的所有方法,并使用UIWebView控件对象子类以EasyJSWebView作为参数实例化该类

例如: 我创建了一个类
JSInterface
来保存我所有的原生Obj-C方法

我有一个自定义方法

- (void)initializeJSInterfaceForWebView:(EasyJSWebView *)webView {
    self.jsInterface.appDelegate = appDelegate;
    self.jsInterface.webView.delegate = self;
    [webView addJavascriptInterfaces:self.jsInterface WithName:@"nativeInterface"];
}
这将初始化
EasyJSWebView

我举例说明

self.jsInterface = [JSInterface initWithView:self];
[self initializeJSInterfaceForWebView:self.webView];
例如,我们有一个原生的
Objective-C
方法:

- (void) printLog:(NSString *)msg {
    NSLog(@"%@", msg);
}
使用
nativeInterface
对象名从
JavaScript
调用本机方法,如下所示:

nativeInterface.printLog("This is only a test.");

询问代码的问题必须证明对正在解决的问题的最低理解。包括尝试的解决方案,为什么它们不起作用,以及预期的结果。感谢您的回答。。。这对我帮助很大D这个答案更灵活,我认为更合适。
- (void) printLog:(NSString *)msg {
    NSLog(@"%@", msg);
}
nativeInterface.printLog("This is only a test.");