2016-07-31 77 views
0

我不能停止点击停止按钮上的计时器,但是当我点击停止按钮时,它再次以较少的延迟触发。NSTimer无效不工作停止按钮点击

这是我ViewController.h文件:

#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController 
{ 
    NSTimer *timer; 
} 

- (IBAction)startTimer:(id)sender; 
- (IBAction)stopTimer:(id)sender; 
@end 

和ViewController.m文件:

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
} 

- (IBAction)startTimer:(id)sender { 
    timer=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self  selector:@selector(timerFired) userInfo:nil repeats:YES]; 
} 

-(void) timerFired{ 
    NSLog(@"Timer Fired"); 
} 

- (IBAction)stopTimer:(id)sender { 
    [timer invalidate]; 
} 
@end 

谢谢。

+1

您是否已将按钮动作正确连接到'stopTimer'?是否调用了stopTimer?这听起来像你的停止按钮可能会再次调用'startTimer' – Paulw11

+0

是的,你是对的我错误地连接了停止计时器按钮来启动计时器和停止计时器方法,所以我已经解决了,谢谢你的帮助。 –

回答

0

地址:

- (IBAction)stopTimer:(id)sender { 
    [timer invalidate]; 
    timer = nil; 
} 
+0

这是个好主意。首先让startTimer调用stopTimer。在开始新的计时器之前。 –

+0

我错误地连接了停止计时器按钮来启动计时器和停止计时器方法,所以我已经解决了,谢谢你的帮助 –

0

检查stopTimer实际上是被调用。从您的描述中可以看出,您已将这两个按钮连接到startTimer

当您停止时将计时器设置为nil是一个好主意,然后您可以检查startTimer以查看计时器是否已在运行。