我正在使用AVPlayer复制MPMediaPlayerView,因此我可以添加一些功能。我已经创建了一个带播放/暂停的UIView,我在触摸时显示它,然后根据HeadsUpUI示例代码设置一个计时器来隐藏它。我已经添加了一个MPVolumeView来调整音量。
这样可以正常工作,除非你滑动音量,我的父视图不知道你还在与子视图交互并在计时器触发时隐藏它自己。所以你仍在调整音量,但滑块不再存在。
我最理解的是,当视图和所有子视图上的触摸结束时。有没有办法做到这一点?
我能想到的唯一解决方案是走MPVolumeView的子视图,当我找到滑块时,观察跟踪属性以了解它何时完成跟踪。但这并不能解决有人长时间按下按钮的问题。我真的很想找到一个通用的解决方案。
TIA
答案 0 :(得分:7)
将手势识别器添加到MPVolumeView。让手势识别器调用视图中重置计时器的方法。
MPVolumeView *volumeView = [[MPVolumeView alloc] initWithFrame:CGRectMake(0, 88, 320, 30)];
UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(volumeAdjusted:)];
recognizer.cancelsTouchesInView = NO; // this line is VERY important
[volumeView addGestureRecognizer:recognizer];
[self.view addSubview:volumeView];
[volumeView release];
-(void)volumeAdjusted:(UIGestureRecognizer *)recognizer {
// reset timer
}