使用NSRunLoop阻止在Simulator上继续工作但在设备上失败

时间:2013-05-15 06:17:05

标签: ios objective-c

这里我有一个UIAlertView,它出现在一个NSRunLoop中,我希望程序进行阻止出现,在我点击“确定”按钮后,程序继续进行。我尝试了2种方法

1.在我的LBAlertView.h

@interface LBAlertView : UIAlertView <UIAlertViewDelegate>
{
    BOOL isWaiting4Tap;
}

@property(nonatomic,assign) BOOL isWaiting4Tap;

- (void)showModal;

@end  

在LBAlertView.m

- (void)showModal
{
    isWaiting4Tap = YES;
    [self show];
    while (self.isWaiting4Tap) 
    {
    [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate 
   distantFuture]];
    }
}

在代表处

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    switch (alertView.tag) {
        case 0:
        {
            self.tipView.isWaiting4Tap = 0;
            [((LBSceneView*)self.delegate).theBall initBall];
        }
            break;

        default:
            break;
    }  
}

其中tipView是LBAlertView的对象。

2.在LBAlertView.m

- (void)showModal
{    
    [self show];
    CFRunLoopRun(); 
}

在代表处

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    switch (alertView.tag) {
        case 0:
        {
            CFRunLoopStop(CFRunLoopGetCurrent()); 
            [((LBSceneView*)self.delegate).theBall initBall];
        }
            break;

        default:
            break;
    }  
}

这两种方法在模拟器上运行良好但在设备上失败,LBAlertView一次又一次弹出,似乎程序根本没有被阻止,任何人都可以找出原因,谢谢

0 个答案:

没有答案