iOS开发之运动事件和远程控制

前端技术 2023/09/07 IOS

之前我们已经学习了触摸处理和手势识别,其实这两个同属于iOS事件的触摸事件,今天我们来学习下iOS事件的另外两个事件:

一、运动事件
运动事件,是通过加速器进行触发,和触摸事件一样,继承UIResponder类的对象才能处理运动事件

UIResponder处理运动事件的方法:

http://stream.jewishmusicstream.com:8000\"];
    _player = [[AVPlayer alloc] initWithURL:url];
}
#pragma mark 远程控制事件
- (void)remoteControlReceivedWithEvent:(UIEvent *)event{
    if(event.type == UIEventTypeRemoteControl){
        switch (event.subtype) {
            case UIEventSubtypeRemoteControlPlay:
                [_player play];
                _isPlaying = true;
                break;
            case UIEventSubtypeRemoteControlTogglePlayPause:
                [self btnClick:_playButton];
                break;
            case UIEventSubtypeRemoteControlNextTrack:
                NSLog(@\"Next...\");
                break;
            case UIEventSubtypeRemoteControlPreviousTrack:
                NSLog(@\"Previous...\");
                break;
            case UIEventSubtypeRemoteControlBeginSeekingForward:
                NSLog(@\"Begin seek forward...\");
                break;
            case UIEventSubtypeRemoteControlEndSeekingForward:
                NSLog(@\"End seek forward...\");
                break;
            case UIEventSubtypeRemoteControlBeginSeekingBackward:
                NSLog(@\"Begin seek backward...\");
                break;
            case UIEventSubtypeRemoteControlEndSeekingBackward:
                NSLog(@\"End seek backward...\");
                break;
            default:
                break;
        }
        [self changeUIState];
    }
}
#pragma mark 界面布局
- (void)initLayout{
    //专辑封面
    UIImage *image = [UIImage imageNamed:@\"wxl.jpg\"];
    CGRect *frame = [UIScreen mainScreen].applicationFrame;
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
    imageView.image = image;
    imageView.contentMode = UIViewContentModeScaleAspectFill;
    [self.view addSubview:imageView];
    //播放控制面板
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 480, 320, 88)];
    view.backgroundColor = [UIColor lightGrayColor];
    view.alpha = 0.9;
    [self.view addSubview:view];
    //添加播放按钮
    _playButton = [UIButton buttonWithType:UIButtonTypeCustom];
    _playButton.bounds = CGRectMake(0, 0, 50, 50);
    CGFloat playBtnX = view.frame.size.width/2;
    CGFloat playBtnY = view.frame.size.height/2;
    _playButton.center = CGPointMake(playBtnX, playBtnY);
    [self changeUIState];
    [_playButton addTarget:self
                    action:@selector(btnClick:)
          forControlEvents:UIControlEventTouchUpInside];
    [view addSubview:_playButton];
}
#pragma mark 界面状态
- (void)changeUIState{
    if(_isPlaying){
        UIImage *pauseImage = [UIImage imageNamed:@\"playing_btn_pause_n.png\"];
        UIImage *pauseImageH = [UIImage imageNamed:@\"playing_btn_pause_h.png\"];
        [_playButton setImage:pauseImage forState:UIControlStateNormal];
        [_playButton setImage:pauseImageH forState:UIControlStateHighlighted];
    }else{
        UIImage *playImage = [UIImage imageNamed:@\"playing_btn_play_n.png\"];
        UIImage *playImageH = [UIImage imageNamed:@\"playing_btn_play_h.png\"];
        [_playButton setImage:playImage forState:UIControlStateNormal];
        [_playButton setImage:playImageH forState:UIControlStateHighlighted];
    }
}
- (void)btnClick:(UIButton *)btn{
    if (_isPlaying) {
        [_player pause];
    }else{
        [_player play];
    }
    _isPlaying =! _isPlaying;
    [self changeUIState];
}
@end

远程控制实例效果

这次笔记贴了很多代码,是因为这两个事件使用简单,理论知识不多,光讲理论,也不好理解,贴代码非常直观。

本文地址:https://www.stayed.cn/item/18729

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。