webScriptNameForSelector и метод javascript с подчеркиванием - PullRequest
1 голос
/ 22 марта 2012

Я использую WebView в своем приложении, и на странице, которую я загружаю, есть некоторые существующие вызовы функций javascript, которые использовались в среде Windows и теперь должны использоваться в приложении Mac.Моя проблема заключается в том, что текущий javascript (перенесенный из приложения Windows, где работает следующая функция) вызывает целевую функцию C следующим образом:

function callObjectiveC
{
   window.external.MY_ObjectiveCFunction();
}

Я пытался использовать:

+ (NSString *)webScriptNameForSelector:(SEL)sel
{
    if (sel == @selector(MyObjectiveCFunction)) 
    {
    return @"My_ObjectiveCFunction";
    }   
}

на основании: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/WebKit/Protocols/WebScripting_Protocol/Reference/Reference.html но безрезультатно.Есть ли способ сделать это?Я могу вызывать объективный метод C как угодно, мне просто нужно иметь возможность сопоставить это с тем, что есть в существующем javascript.

Спасибо, c.

Ответы [ 3 ]

4 голосов
/ 23 марта 2012

Разобрался с решением:

- (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args
{
NSLog(@"invoke undefined method: %@", name);
if([name isEqualToString:@"My_ObjectiveCFunction"])
{
    return NSSelectorFromString(@"My_ObjectiveCFuntion");   
}
return nil;
}
0 голосов
/ 27 июля 2015

вы просто не должны использовать символы подчеркивания.К сожалению, это единственное правильное решение.

см. здесь в apple docs

Я не думаю, что использование invokeUndefinedMethodFromWebScript: хорошая идея здесь

0 голосов
/ 13 апреля 2012

Отсутствует двоеточие.

if (sel == @selector (MyObjectiveCFunction:))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...