2

这里我有一个 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 一遍又一遍地弹出,似乎程序根本没有被阻止,有人能找出原因吗,谢谢

4

0 回答 0