【发布时间】:2015-02-11 20:31:39
【问题描述】:
我在 stackoverflow 上找到了一些关于该问题的问题和答案,但没有一个解决方案能解决我的问题。
我的 iOS 应用程序可以通过一个不错的音乐播放器播放一些音乐。我用 Xcode 的 Interface Builder 设计了它,并拖出一个 UIView 并将其类更改为 MPVolumeView。当我在 iPhone 6 上调试我的应用程序时,一切正常。
这是我的问题:我还在整个视图中拖出了一个 UITapGestureRecognizer,其中包含我的控件,例如
播放/暂停、下一首/上一首曲目 (...)
还有我的MPVolumeView。当我点击该视图时,它应该淡出并消失。然后我在我的UIImageView 上添加了一个UITapGestureRecognizer,它显示了我对这首歌的艺术形象。当我点击这个图像视图时,它应该在我的视图中淡出,所有控件都在 int 中 - 这工作正常。
但是:当我稍微滑动音量滑块的旋钮时,或者如果我只是触摸它,视图仍然会消失。似乎我的MPVolumeView 正在转发我的触摸或类似的东西。我尝试在音量滑块上设置userInteractionEnabled = false,但这并没有帮助。我还将手势识别器的代表设置为 self 并添加了
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
NSLog(@"tapped");
if([gestureRecognizer.view isMemberOfClass:[UIImageView class]]) {
return true;
}
return false;
}
函数到我的代码,它返回 true 或 false,具体取决于我正在点击的视图。当我访问 gestureRecognizer.view 属性时,它无法识别我的 MPVolumeView,只能识别后台的 UIView。
这是我在TapGestureRecognizers 被触发后触发的两个方法:
- (IBAction)overlayViewTapped:(UITapGestureRecognizer *)sender {
if(sender.state == UIGestureRecognizerStateEnded) {
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{ self.blackOverlayView.alpha = 0.0; self.normalTimeLabel.alpha = 1.0; }
completion:nil];
}
}
- (IBAction)imageViewTapped:(UITapGestureRecognizer *)sender {
[UIView animateWithDuration:0.3
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{ self.blackOverlayView.alpha = 1.0; self.normalTimeLabel.alpha = 0.0; }
completion:nil];
}
请帮帮我,我快要疯了..
编辑:我的音乐播放器如下所示:
点击视图上的anywhere后(除了子视图),视图应该淡出并隐藏所有内容,只显示歌曲的原图图像和当前经过的时间。这将如下所示:
正如我所说 - 问题是,如果我只是点击音量滑块或将其滑动一点点,我的 UITapGestureRecognizer 会触发并淡出我的完整视图。我怎样才能防止这种情况发生?
【问题讨论】:
-
您介意发布您的代码吗?任何相关的东西都会起作用。您也可以发布故事板的图片...
-
请稍等,我正在改变我的问题。
-
刚刚编辑了我的问题,希望你明白我的意思。
-
我完全理解您的问题。我要求代码的唯一原因是因为可能有几个更正并且问题的原因并不完全清楚。如果您可以在情节提要中截取 viewController 的屏幕截图,并发布您为此 viewController 编写的任何代码,我可以提供更多帮助。
-
我没有太多代码可以在这里发布,我使用 Interface Builder 设计了我的整个界面,将 TapGestureRecognizer 拖到我的 UIView(其中包含我的所有控件)上,并添加了我的委托方法。除了我已经发布的行之外,没有代码。或者你到底想看什么?
标签: ios objective-c iphone uiview uitapgesturerecognizer