Я пишу некоторый внутренний код в javascript и планирую использовать собственный код для графического интерфейса. Это прекрасно работает в Android, но у меня есть некоторые проблемы с этой работой в Какао на Mac OS X. Я следовал учебнику по яблоку по этому вопросу, но он просто не работает. Позвольте мне попытаться объяснить это после того, как вы увидели код.
Index.html
<html>
<head>
<script type="text/javascript">
document.addEventListener("DOMContentLoaded", ready, false);
function ready() {
document.write(returnString());
bridge.onBackendReady();
}
function returnString() {
return "Hello World!!!!";
}
</script>
</head>
<body>
</body>
</html>
AppDelegate.m
#import "AppDelegate.h"
#import "BackendBridge.h"
@implementation AppDelegate
@synthesize webview;
@synthesize backend;
-(void)applicationDidFinishLaunching:(NSNotification *)notification
{
backend = [[BackendBridge alloc] init];
NSString *backendPath = [[NSBundle mainBundle] pathForResource:@"Index" ofType:@"html"];
NSURL *backendUrl = [NSURL fileURLWithPath:backendPath];
[[webview mainFrame] loadRequest:[NSURLRequest requestWithURL:backendUrl]];
[[webview windowScriptObject] setValue:backend forKey:@"bridge"];
}
@end
BackendBridge.m
#import "BackendBridge.h"
@implementation BackendBridge
-(void)onBackendReady
{
NSLog(@"Ready");
}
@end
Итак, то, что я пытаюсь сделать здесь, довольно просто. Вызвать функцию onBackendReady в классе BackendBridge из javascript. Из того, что я могу понять из яблок WebView API и учебник, это должен быть правильный способ сделать это, но он не работает (вызов NSLog не выполняется). Я знаю, что функция javascript работает как задумано, так как в моем пользовательском интерфейсе я вижу строку "Hello World !!!!" ...