2011-02-06 118 views
6

我正在使用AVPlayer复制MPMediaPlayerView,因此我可以为其添加一些功能。我创建了一个带有播放/暂停的UIView,并将其显示在触摸上,然后设置一个计时器以按照HeadsUpUI示例代码隐藏它。我已经添加了一个MPVolumeView来调整音量。在MPVolumeView中检测触摸

工作正常,除了如果你滑动的音量左右,我的父视图不知道你还在与子视图交互并在计时器触发时隐藏自身。所以你仍然在调整音量,但滑块不再存在。

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

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

TIA

回答

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 
} 
+0

对于前3.2的情况如何?扩展MPVolumeView并实现触摸*事件似乎不起作用。有什么想法吗? – Ephraim 2012-05-23 21:10:19