UIAlertView没有按钮按下计数10秒并做一些事情

时间:2013-05-25 05:43:50

标签: ios objective-c uialertview nstimer

在我的UIAlertView我有两个按钮是,否。如果我按Yes做某事,如果我按No取消UIAlertView,我就可以这样做但是我的问题是,如果我不按任何按钮,它会计算10 seconds并做一些事情吗?

有什么方法吗?

4 个答案:

答案 0 :(得分: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;
        }
    }

答案 1 :(得分:1)

嘿,请尝试以下代码

<强> ViewController.h

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UIAlertViewDelegate> {

    UIAlertView *alertView;
    NSTimer *dismissAlertViewTimer;
}

@end

<强> ViewController.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;
    }
}

<强> Sample Project Dropbox Link

答案 2 :(得分:0)

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

答案 3 :(得分:0)

显示警报视图时启动NSTimer。并在10秒后写下代码来解雇你的代码。和doSomethingbuttonIndex是您想要做某事的索引。

[alertView dismissWithClickedButtonIndex:doSomethingbuttonIndex animated:YES];