iOS 实现倒计时

来源:互联网 发布:淘宝客服骂人投诉电话 编辑:程序博客网 时间:2024/06/11 06:01
 - (void)viewDidLoad {
    [super viewDidLoad];
     self.isRecording = NO;
    [self.playBtn setEnabled:NO];
     self.playBtn.titleLabel.alpha = 0.5;
    recordedFile = [NSURL fileURLWithPath:[NSTemporaryDirectory() stringByAppendingString:@"RecordedFile"]];
    
    AVAudioSession *session = [AVAudioSession sharedInstance];
     NSError *sessionError;
    [session setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError];
    
    if(session == nil)
        NSLog(@"Error creating session: %@", [sessionError description]);
    else
        [session setActive:YES error:nil];
     UILongPressGestureRecognizer * longGes = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPress:)];
      [self.recordButton addGestureRecognizer:longGes];
 }


-(void)longPress:(UILongPressGestureRecognizer *)press {
    if(press.state == UIGestureRecognizerStateBegan) {
        _count = 0;
        self.recordButton.enabled = YES;
        [self prepareTimer];
    }else if(press.state ==UIGestureRecognizerStateEnded) {
        [_timer invalidate];
        _timer = nil;
        self.isRecording = NO;
        [self.recordButton setTitle:@"录音" forState:UIControlStateNormal];
        [self.playBtn setEnabled:YES];
        [self.playBtn.titleLabel setAlpha:1];
        [recorder stop];
        recorder = nil;
        
        NSError *playerError;
        
        player = [[AVAudioPlayer alloc] initWithContentsOfURL:recordedFile error:&playerError];
        
        if (player == nil)
        {
            NSLog(@"ERror creating player: %@", [playerError description]);
        }
        player.delegate = self;
     }
}
-(void)prepareTimer {
    _timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(performWithTimer:) userInfo:nil repeats:YES];
    [_timer setFireDate:[NSDate distantPast]];
    
}
-(void)performWithTimer:(NSTimer *)timer {
    _count++;
    if(_count < 30) {
        if(_isRecording == NO) {
            self.isRecording = YES;
            [self.recordButton setTitle:@"停止录音" forState:UIControlStateNormal];
            [self.playBtn setEnabled:NO];
            [self.playBtn.titleLabel setAlpha:0.5];
            recorder = [[AVAudioRecorder alloc] initWithURL:recordedFile settings:nil error:nil];
            [recorder prepareToRecord];
            [recorder record];
            player = nil;
        }
    }else {
        _isRecording =NO;
        [recorder stop];
        [_timer invalidate];
        _timer = nil;
        [self.playBtn setEnabled:YES];
        [self.playBtn.titleLabel setAlpha:1];
        [recorder stop];
        recorder = nil;
        NSError *playerError;
        
        player = [[AVAudioPlayer alloc] initWithContentsOfURL:recordedFile error:&playerError];
        
        if (player == nil)
        {
            NSLog(@"ERror creating player: %@", [playerError description]);
        }
        player.delegate = self;

        [self.recordButton setTitle:@"录音" forState:UIControlStateNormal]; ;
        UIAlertView * view = [[UIAlertView alloc]initWithTitle:@"标题" message:@"超过了" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [view show];
       }
}

  - (IBAction)playPause:(id)sender {
 
     if([player isPlaying])
     {
         [player pause];
         [self.recordButton setEnabled:YES];
         [self.playBtn setTitle:@"播放" forState:UIControlStateNormal];
     }
      else
     {
         [player play];
         [self.playBtn setTitle:@"停止播放" forState:UIControlStateNormal];
         [self.recordButton setEnabled:NO];
     }

}
- (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag
{
    [self.playBtn setTitle:@"播放" forState:UIControlStateNormal];
    [self.recordButton setEnabled:YES];
}

0 0