2

在我的UIAlertView我有两个按钮是的,不。如果我按下Yes做某事,如果我按下No取消,UIAlertView那么我可以这样做,但我的问题是,如果我不按下任何按钮,它会计数10 seconds并做某事吗?

有什么方法吗?

4

4 回答 4

1

嘿试试下面的代码

视图控制器.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIAlertViewDelegate> {

    UIAlertView *alertView;
    NSTimer *dismissAlertViewTimer;
}

@end

视图控制器.m

- (IBAction)btnShowAlertTouch:(id)sender {
    alertView = [[UIAlertView alloc] initWithTitle:@"Alert" 
                                           message:@"Your Message" delegate:self
                                 cancelButtonTitle:@"Yes"
                                 otherButtonTitles:@"No", nil];
    [alertView show];
   dismissAlertViewTimer = [NSTimer scheduledTimerWithTimeInterval:10.0
                                                            target:self
                                                          selector:@selector(dismissAlertView)
                                                          userInfo:nil
                                                           repeats:NO];


}
// Function called on by timer to dismis the alertview
- (void)dismissAlertView {
    [alertView dismissWithClickedButtonIndex:-1 animated:YES];
}

// Alert View Delegate
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if(dismissAlertViewTimer!=nil) {
        [dismissAlertViewTimer invalidate];
        dismissAlertViewTimer=nil;
    }
}

示例项目 Dropbox 链接

于 2013-05-25T06:37:45.057 回答
1

检查这种方式它会工作。将 NSTimer 类的计时器作为全局变量。

当您当时单击警报按钮时,您必须是invalidate 计时器。

在 .h 文件中这样声明

    NSTimer *timer;
    UIAlertView *myalert;

    myalert = [[UIAlertView alloc] initWithTitle:@"alert"message:@"hi" 
                                        delegate:self cancelButtonTitle:@"no"
                               otherButtonTitles:@"yes", nil];
    [myalert show];

   timer= [NSTimer scheduledTimerWithTimeInterval:4.0 
                                           target:self selector:@selector(test) 
                                         userInfo:nil
                                          repeats:NO];

    -(void)test{
        [myalert dismissWithClickedButtonIndex:-1 animated:YES];
        //do somthing
    }
    - (void)alertView:(UIAlertView *)alertView 
        clickedButtonAtIndex:(NSInteger)buttonIndex{
        if(timer!=nil){
        [timer invalidate];
        timer=nil;
        }
    }
于 2013-05-25T06:05:58.143 回答
0

显示警报视图时启动 NSTimer。并在 10 秒后编写以下代码以关闭您的代码。和doSomethingbuttonIndex是你想要做某事的同一个索引。

[alertView dismissWithClickedButtonIndex:doSomethingbuttonIndex animated:YES];
于 2013-05-25T06:01:13.107 回答
0

是的,如果您NSTimer在创建“”的同时使用“ UIAlertView”,您可以让计时器方法关闭(或做任何您想做的事情)您的警报。

于 2013-05-25T05:45:07.447 回答