1

xcode から htmnl 関数を呼び出す問題に直面していました。ここでは、Html と Objective-C の両方のコードを書いています。

これはhtml関数です

<script type="text/javascript">
        function load(val)
        {
            alert(val);
            document.getElementById("h_dvid").value=val;
        } 

   </script>

ビューコントローラーviewdidloadでは、このようにその関数を呼び出しています。

- (void)viewDidLoad
{
    [super viewDidLoad];
    web = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 360)];
    [web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]
                                                                          pathForResource:@"index" ofType:@"html"]isDirectory:NO]]];
    [self.view addSubview:web];

    NSString* str=[NSString stringWithFormat:@"load('%@')",@"hi"];

    [web stringByEvaluatingJavaScriptFromString:str];

    web.delegate=self;
    // Do any additional setup after loading the view, typically from a nib.

}

次に、htmlファイルが完全にロードされていないため、ロード関数を呼び出すことができませんでした。そのボタンをクリックしたときにボタンを取得し、html関数を呼び出して正常に動作しました.しかし、HTML関数viewdidload自体を呼び出す必要があります.私はあなたの答えを待っています。

4

1 に答える 1

1

呼び出すと、URL の読み込みが開始loadRequest:されます。UIWebViewこれは非同期プロセスです。これが完了するまで、メソッドUIWebViewを呼び出しても効果がありませんstringByEvaluatingJavaScriptFromString:

このメソッドを実装しUIWebViewDelegate、必要な JS 関数を呼び出します。

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSString* str=[NSString stringWithFormat:@"load('%@')",@"hi"];
    [web stringByEvaluatingJavaScriptFromString:str];
}

それが役立つことを願っています!

于 2013-09-10T10:15:58.503 に答える