在我的UIAlertView
我有两个按钮是,否。如果我按Yes
做某事,如果我按No
取消UIAlertView
,我就可以这样做但是我的问题是,如果我不按任何按钮,它会计算10 seconds
并做一些事情吗?
有什么方法吗?
答案 0 :(得分:1)
检查这种方式它是否正常工作。将NSTimer类的计时器作为全局变量。
.h文件中的当您点击警报按钮时,您必须
invalidate
计时器。
声明如下
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];