我正在尝试让我的UIScrollView
占据所有屏幕并在其中放置一个用户可以缩放,平移等的图像。这一切都有效。但是,当用户点击屏幕一次时,我希望在此UIScrollView
之上显示一个附加视图,其中包含有关图片的一些信息。问题在于,无论我做什么,UIScrollView
的孩子ImageView始终位于顶部。我已经尝试更改xib中视图的顺序,我尝试使用bringSubViewToFront
但没有成功。这是代码:
- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(flipViewSingleTap:)];
singleTapGesture.delegate = self;
self.flippedImage.userInteractionEnabled = YES;
[self.flippedImage addGestureRecognizer:singleTapGesture];
[singleTapGesture release];
self.flippedImageView.contentSize = CGSizeMake(1024, 768);
self.flippedImageView.delegate = self;
self.flippedMenuView.alpha = 0.0f;
}
- (IBAction)flipViewSingleTap:(UIGestureRecognizer *)sender {
flipItemsVisible = !flipItemsVisible;
[self.view bringSubviewToFront:self.flippedMenuView];
[UIView animateWithDuration:0.5f
delay:0.0f
options:UIViewAnimationCurveEaseInOut
animations:^{
self.flippedMenuView.alpha = flipItemsVisible ? 1.0f : 0.0f
}
completion:nil];
}
答案 0 :(得分:0)
也许将此行添加到viewDidLoad:
[self.view addSubview:self.flippedMenuView];
(这假设self.view是UIScrollView。)
答案 1 :(得分:0)
尝试添加忽略菜单视图的gestureRecognizer:shouldReceiveTouch:
委托方法。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *)touch {
return ![touch.view isDescendantOfView:self.flippedMenuView];
}
答案 2 :(得分:0)
启用图像视图的userInteraction是不够的。 touchesMoved / Began的默认方法是空白的(我认为)。
确保您自己的UIImageView自定义子类是flippedImageView。覆盖这些方法并发送一个代表“userTappedImageAt:”之类的委托消息(自定义)。
如果您的子视图处理不会带来任何问题,并且您的触摸工作正常,请抓住应用程序委托窗口[[[UIApplication sharedApplication] delegate]窗口]并添加子视图,但它可能更安全使用视图,以便您可以使用convertPoint:from / to functions。
我告诉你的大部分内容都可以从阅读“观点和编程指南”中得到推断,以及有关SO的问题以及获得最佳观点的答案。
您可以随时“推送自己的”子视图,以避免使用未知的SDK识别器。
祝你好运, 斯蒂芬