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