0

我正在尝试制作一个 iphone 应用程序。在那个应用程序中,我使用的是 Javascript。我想知道从 Javascript 调用目标 C 函数函数是可能的。如果是,那么我们该怎么做呢?如果没有,那么还有其他选择吗?

谢谢阿坎莎

我有这个java脚本代码。所以每当我输入“onPlayerStateChange”函数时,我想打开一个文件并在这个文件中写入一些事件。但我无法在 javascript 中打开和写入文件,因为我不知道文件的位置。使用objective-c,我可以在documentsDirectory 中打开和写入数据,但我不确定javascript。所以我想在objective-C .m文件中的“onPlayerStateChange”中调用一个函数。每当我输入“onPlayerStateChange”函数时,该函数就会写入文件。

现在可以提出什么建议吗?

<!DOCTYPE HTML>
<html>
<body>
<div id="player"></div>
<script>
    //Load player api asynchronously.
    var tag = document.createElement('script');
    tag.src = "http://www.youtube.com/player_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    var done = false;
    var player;
    function onYouTubePlayerAPIReady() {
        player = new YT.Player('player', {
          height: '390',
          width: '640',
          videoId: 'JW5meKfy3fY',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
    }
    function onPlayerReady(evt) {
        evt.target.playVideo();
    }
    function onPlayerStateChange(evt) {
        if (evt.data == YT.PlayerState.PLAYING && !done) { // NEED TO ADD FILE OPERATION HERE
            setTimeout(stopVideo, 6000);
            done = true;
        }
    }
    function stopVideo() {
        player.stopVideo();
    }
</script>
</body>
</html>
4

3 回答 3

1

是的,您可以使用HTML /JS 上下文和在

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

您可以捕获请求并调用 obj-c 方法。或者您创建与 Appcelerator 相同的解决方案:https ://stackoverflow.com/a/2471774/644629

于 2012-04-17T08:18:17.957 回答
1

您不能像在 JAVA/ANDROID 中那样直接执行此操作。参考下面我的回答

iOS UIWebView Javascript - 插入数据 - 接收回调?

于 2012-04-17T11:11:07.573 回答
0

您可以创建一个目标 c 模块并将其导入您的应用程序并从 JavaScript 调用它。这是你要找的:

http://developer.appcelerator.com/doc/mobile/iphone/module_sdk

于 2012-04-24T08:07:08.270 回答