之前我们已经学习了触摸处理和手势识别,其实这两个同属于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
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我