6

我正在使用 AVPlayer 复制 MPMediaPlayerView,这样我就可以向它添加一些功能。我已经创建了一个带有播放/暂停的 UIView,我在触摸时显示它,然后根据 HeadsUpUI 示例代码设置一个计时器来隐藏它。我添加了一个 MPVolumeView 来调节音量。

这很好用,除了如果您正在滑动音量,我的父视图不知道您仍在与子视图交互并在计时器触发时隐藏自身。因此,您仍在调整音量,但滑块不再存在。

我最想知道的是视图和所有子视图上的触摸何时结束。有没有办法做到这一点?

我能想到的唯一解决方案是遍历 MPVolumeView 的子视图,当我找到滑块时,观察跟踪属性以了解何时完成跟踪。但这并不能处理长时间按住按钮的人。我真的很想找到一个通用的解决方案。

TIA

4

1 回答 1

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
}
于 2011-03-21T16:54:37.183 回答