UITapGestureRecognizer 和UIPanGestureRecognizer的使用,触摸和滑动

/**

 *  点击了进度条背景

 */

- (IBAction)tapProgressBg:(UITapGestureRecognizer *)sender {

    CGPoint point = [sender locationInView:sender.view];

    

    // 切换歌曲的当前播放时间

    self.player.currentTime = (point.x / sender.view.width) * self.player.duration;

    

    [self updateCurrentTime];

}

////////////滑动

- (IBAction)panSlider:(UIPanGestureRecognizer *)sender {

    // 获得挪动的距离

    CGPoint t = [sender translationInView:sender.view];

    [sender setTranslation:CGPointZero inView:sender.view];

    

    // 控制滑块和进度条的frame

    CGFloat sliderMaxX = self.view.width - self.slider.width;

    self.slider.x += t.x;

    if (self.slider.x < 0) {

        self.slider.x = 0;

    } else if (self.slider.x > sliderMaxX) {

        self.slider.x = sliderMaxX;

    }

    

    self.progressView.width = self.slider.center.x;

    

    // 设置时间值

    double progress = self.slider.x / sliderMaxX;

    NSTimeInterval time = self.player.duration * progress;

    [self.slider setTitle:[self strWithTime:time] forState:UIControlStateNormal];

    

    // 显示半透明指示器的文字

    [self.currentTimeView setTitle:self.slider.currentTitle forState:UIControlStateNormal];

    self.currentTimeView.x = self.slider.x;

    

    if (sender.state == UIGestureRecognizerStateBegan) {

        NSLog(@"UIGestureRecognizerStateBegan");

        // 停止定时器

        [self removeCurrentTimeTimer];

        

        // 显示半透明指示器

        self.currentTimeView.hidden = NO;

        self.currentTimeView.y = self.currentTimeView.superview.height - 10 - self.currentTimeView.height;

    } else if (sender.state == UIGestureRecognizerStateEnded) { // 手松开

        // 设置播放器的时间

        self.player.currentTime = time;

        

        NSLog(@"UIGestureRecognizerStateEnded");

        // 开始定时器

        [self addCurrentTimeTimer];

        

        // 隐藏半透明指示器

        self.currentTimeView.hidden = YES;

    }

    

}

IOS开发
原文地址:https://www.cnblogs.com/luanmage/p/4877623.html