Ios UIScrollview内容始终位于顶部

Ios UIScrollview内容始终位于顶部,ios,xcode,uiscrollview,uigesturerecognizer,Ios,Xcode,Uiscrollview,Uigesturerecognizer,我正试图让我的UIScrollView占据整个屏幕,并在其中有一个用户可以缩放、平移等的图像。这一切都很有效。但是,当用户点击屏幕一次时,我希望在这个UIScrollView的顶部显示一个附加视图,其中包含一些关于图片的信息。问题是,无论我做什么,UIScrollView的子ImageView始终位于顶部。我尝试过改变xib中视图的顺序,尝试过使用bringSubViewToFront,但没有成功。代码如下: - (void)viewDidLoad { [super vie

我正试图让我的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];
}

可以将此行添加到viewDidLoad:

[self.view addSubview:self.flippedMenuView];
这假定self.view是UIScrollView。

尝试添加忽略菜单视图的GestureRecognitor:shouldReceiveTouch:delegate方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
       shouldReceiveTouch:(UITouch *)touch {
  return ![touch.view isDescendantOfView:self.flippedMenuView];
}

为图像视图启用用户交互是不够的。我认为它默认的触摸方式moved/start是空的

确保UIImageView的自定义子类与flippedImageView相同。覆盖这些方法并发送一条委托消息custom,该消息的内容类似于userTappedImageAt:

如果您的子视图处理无法将任何内容放在前面,并且您的触摸操作正常,请抓取应用程序委托窗口[[[UIApplication sharedApplication]delegate]窗口]并向其中添加子视图,但是使用视图可能更安全,这样您就可以使用convertPoint:from/to函数

我告诉你的大部分内容都可以从阅读《视图和编程指南》中推断出来,还有一些问题和答案,比如如何将视图放在首位

您始终可以滚动自己的子视图,以避免未知的SDK识别器

祝你好运,
斯蒂芬

谢谢你的建议,但这没用。如果我将flippedMenuView添加为UIScrollView的子视图,则如果用户放大,它将从屏幕上平移。我把它作为一个单独的视图添加到顶部的目的是让它在运动方面保持静止。谢谢,但这并没有改变任何事情。如果添加一个NSLog@%@,touch.view,你会看到什么;并尝试使用这两个选项,始终返回“否”,然后返回“是”?flippedView和FlippedMenu视图子视图在同一视图中吗?我认为问题与触摸无关。即使我最初让flippedMenuView可见,它也总是在滚动图像后面的portraid。我知道这很旧,可能已经解决了,但UIScrollView已经在它上附加了手势识别器,并捕捉到某些触摸。以上答案将帮助您缩小解决方案的范围。我看你已经注意到你需要如何打开交互来获取要点。我现在正在处理滚动视图,它们有点复杂,有额外的子视图等等。讨厌的东西不在文件里