在我的UIAlertView
我有两个按钮是的,不。如果我按下Yes
做某事,如果我按下No
取消,UIAlertView
那么我可以这样做,但我的问题是,如果我不按下任何按钮,它会计数10 seconds
并做某事吗?
有什么方法吗?
在我的UIAlertView
我有两个按钮是的,不。如果我按下Yes
做某事,如果我按下No
取消,UIAlertView
那么我可以这样做,但我的问题是,如果我不按下任何按钮,它会计数10 seconds
并做某事吗?
有什么方法吗?
嘿试试下面的代码
视图控制器.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;
}
}
检查这种方式它会工作。将 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;
}
}
显示警报视图时启动 NSTimer。并在 10 秒后编写以下代码以关闭您的代码。和doSomethingbuttonIndex
是你想要做某事的同一个索引。
[alertView dismissWithClickedButtonIndex:doSomethingbuttonIndex animated:YES];
是的,如果您NSTimer
在创建“”的同时使用“ UIAlertView
”,您可以让计时器方法关闭(或做任何您想做的事情)您的警报。