2010-11-24 4 views
0

У меня есть следующий код, отлично работающий, кроме ... хорошо для обратного вызова!Как реализовать телефонный звонок обратно на javascript

- (void)readBarcode:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options 
{ 
    ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
    reader.readerDelegate = self; 

    ZBarImageScanner *scanner = reader.scanner; 
    [scanner setSymbology: ZBAR_EAN13 
        config: ZBAR_CFG_ENABLE 
         to: 1]; 

    [[super appViewController] presentModalViewController:reader animated:YES]; 
    [reader release]; 
} 

(void) imagePickerController:(UIImagePickerController*)reader didFinishPickingMediaWithInfo: (NSDictionary*) info 
{ 
    id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults]; 

    ZBarSymbol *symbol = nil; 
    for(symbol in results) 
     break; 

    resultText.text = symbol.data; 
    resultImage.image = [info objectForKey: UIImagePickerControllerOriginalImage]; 

    NSString* retStr = [[NSString alloc] 
         initWithFormat:@"%@({ code: '%@', image: '%@' });", 
         resultText.text,resultImage.image]; 

    [ webView stringByEvaluatingJavaScriptFromString:retStr ]; 

    [reader dismissModalViewControllerAnimated: YES]; 
} 

Я затем вызвать функцию из JavaScript:

 function getIt(){ 
      PhoneGap.exec("BarcodeReader.readBarcode", "myCallback"); 
     } 

Проблема в том, что я не понимаю, как вызвать функцию «» myCallBack из C# (признать, я всего новичку)

+0

вы не приняли предыдущий ответ, я считаю, это то же самое, что и это? http://stackoverflow.com/questions/4188581/how-to-implement-a-callback-with-phonegap – 2010-11-24 21:03:24

+0

согласился, но вопрос не был полным. – Disco 2010-11-24 21:38:56

ответ

1

Это должно работать ...

Добавить объект в заголовок файла (How To Add A Property In Objective C)

-(NSString *) jsCallback; 

Получить яваскрипт метода обратного вызова и установить свойство

- (void)readBarcode:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options 
{ 
    ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
    reader.readerDelegate = self; 

    // New Property added !!!! 
    NSString * jsCallback = [info objectAtIndex:0]; 

    ZBarImageScanner *scanner = reader.scanner; 
    [scanner setSymbology: ZBAR_EAN13 
        config: ZBAR_CFG_ENABLE 
         to: 1]; 

    [[super appViewController] presentModalViewController:reader animated:YES]; 
    [reader release]; 
} 

Используйте Javascript метод обратного вызова здесь

- (void) imagePickerController:(UIImagePickerController*)reader didFinishPickingMediaWithInfo: (NSDictionary*) info 
{ 
    id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults]; 

    ZBarSymbol *symbol = nil; 
    for(symbol in results) 
     break; 

    resultText.text = symbol.data; 
    resultImage.image = [info objectForKey: UIImagePickerControllerOriginalImage]; 

    // create the string 
    NSString* retStr = [[NSString alloc] 
    initWithFormat:@"%@({ code: '%@', image: '%@' });", 
          jsCallback,resultText.text,resultImage.image]; 

    //execute 
    [ webView stringByEvaluatingJavaScriptFromString:retStr ]; 

    [reader dismissModalViewControllerAnimated: YES]; 
} 

Пожалуйста, отметьте the other answer I provided you, как правильно и

Смежные вопросы