具体使用
[SmsTimerManager sharedManager].second = (int)time;
[[SmsTimerManager sharedManager] resetTime];
[SmsTimerManager sharedManager].delegate = self;
[strongSelf updateTime];
设置代理方法 更新按钮的标题
- (void)updateTime
{
if ([SmsTimerManager sharedManager].second > 0) {
self.verifyBtn.userInteractionEnabled = NO;
NSString *title = [NSString stringWithFormat:@“重发(%d)”, [SmsTimerManager sharedManager].second];
[self.verifyBtn setTitle:title forState:UIControlStateNormal];
}else if ([SmsTimerManager sharedManager].second == 0) {
[self.verifyBtn setTitle:@“重发” forState:UIControlStateNormal];
self.verifyBtn.userInteractionEnabled = YES;
}
}
.h 文件
#import <Foundation/Foundation.h>
@protocol SMSUpdateTimerDelegate <NSObject>
@optional
+ (void)updateTime;
@end
@interface SmsTimerManager : NSObject
@property (weak, nonatomic)id<SMSUpdateTimerDelegate> delegate;
@property (assign, nonatomic) int second;
@property (assign, nonatomic) int secondForget;
@property (strong, nonatomic) NSTimer *timer;
+ (instancetype)sharedManager;
- (void)timeAction;
- (void)resetTime;
- (void)resetTimeForget;
@end
.m 文件
#import "SmsTimerManager.h"
@implementation SmsTimerManager
- (void)timeAction
{
if (self.second > 0) {
self.second--;
}
if (self.secondForget > 0) {
self.secondForget--;
}
if (self.delegate && [self.delegate respondsToSelector:@selector(updateTime)]) {
[self.delegate updateTime];
}
}
- (void)resetTime
{
self.second = 60;
[self timeAction];
}
- (void)resetTimeForget
{
self.secondForget = 60;
[self timeAction];
}
+ (SmsTimerManager *)sharedManager
{
static SmsTimerManager *manager = nil;
@synchronized(self) {
if (!manager) {
manager = [[SmsTimerManager alloc]init];
manager.second = 0;
manager.secondForget = 0;
manager.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:manager selector:@selector(timeAction) userInfo:nil repeats:YES];
}
}
return manager;
}
@end