Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何延迟方法调用,直到其他代码首先完成_Iphone_Ios_Objective C - Fatal编程技术网

Iphone 如何延迟方法调用,直到其他代码首先完成

Iphone 如何延迟方法调用,直到其他代码首先完成,iphone,ios,objective-c,Iphone,Ios,Objective C,我想延迟方法的调用,直到其他代码首先完成 这是一个按钮触发的动作。用户扫描条形码。我希望在调用另一个方法之前完成此操作:[self-performSelector:@selector(otherMethod:)withObject:nil afterDelay:0.5]; 我尝试过使用延迟,但这既不好也不可预测 - (IBAction) scanButtonTapped { NSLog(@"TBD: scan barcode here..."); // ADD: pre

我想延迟方法的调用,直到其他代码首先完成

这是一个按钮触发的动作。用户扫描条形码。我希望在调用另一个方法之前完成此操作:
[self-performSelector:@selector(otherMethod:)withObject:nil afterDelay:0.5];
我尝试过使用延迟,但这既不好也不可预测

    - (IBAction) scanButtonTapped
{
    NSLog(@"TBD: scan barcode here...");

    // ADD: present a barcode reader that scans from the camera feed
    ZBarReaderViewController *reader = [ZBarReaderViewController new];
    reader.readerDelegate = self;
    reader.supportedOrientationsMask = ZBarOrientationMaskAll;

    ZBarImageScanner *scanner = reader.scanner;
    // TODO: (optional) additional reader configuration here

    // EXAMPLE: disable rarely used I2/5 to improve performance
    [scanner setSymbology: ZBAR_I25
                   config: ZBAR_CFG_ENABLE
                       to: 0];

    // present and release the controller
    [self presentModalViewController: reader
                            animated: YES];

    [self performSelector:@selector(otherMethod:) withObject:nil afterDelay:0.5];


}

也许您需要使用委托方法

- (void) imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
{
   //call other method here
}

我假设您正在使用ZBar库

也许您需要使用委托方法

- (void) imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
{
   //call other method here
}

我假设您正在使用ZBar库

您没有显示扫描代码,但我认为您需要在扫描完成(成功或其他)时传递一个块以调用它

设想扫描方法如下所示:

- (void)scanBarCodeWithCompletionBlock:^(BOOL successfulScan)completionBlock {

    if (do the scan) {
        completionBlock(YES);
    } else {
        completionBlock(NO);
    }
}
您可能希望通过属性将完成块传递给扫描程序代码,并根据需要传递和调用它:

ZBarImageScanner *scanner = reader.scanner;
scanner.completionBlock = ^(BOOL successfulScan) {
    if (!successfulScan) {
         initiateMoaningSequence();
    }
};

您不显示扫描代码,但我认为您需要在扫描完成时(成功或不成功)传递一个块以调用它

设想扫描方法如下所示:

- (void)scanBarCodeWithCompletionBlock:^(BOOL successfulScan)completionBlock {

    if (do the scan) {
        completionBlock(YES);
    } else {
        completionBlock(NO);
    }
}
您可能希望通过属性将完成块传递给扫描程序代码,并根据需要传递和调用它:

ZBarImageScanner *scanner = reader.scanner;
scanner.completionBlock = ^(BOOL successfulScan) {
    if (!successfulScan) {
         initiateMoaningSequence();
    }
};

你想完成什么?动画?所以您希望在
presentModalViewController:animated:
完成后调用该方法(用户获得
阅读器
控制器?或在代码完成扫描后?签出
呈现视图控制器:动画:完成
UIViewController方法
@NikolaiRuhe我只想调用其他方法:在条形码扫描完成后。然后需要向条形码扫描代码传递一个块。可能有两个块;一个表示成功,一个表示失败。您希望完成什么?动画?因此您希望在
presentModalViewController:animated:
完成后调用该方法(用户获得
阅读器
控制器?或在代码完成扫描后?签出
呈现视图控制器:动画:完成
UIViewController方法
@NikolaiRuhe我只想调用其他方法:在条形码扫描完成后。然后需要向条形码扫描代码传递一个块。可能有两个障碍,一个是成功,一个是失败。