这里我有一个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一次又一次弹出,似乎程序根本没有被阻止,任何人都可以找出原因,谢谢