如何让小UIView后面的按钮无法点击?

时间:2011-09-30 22:06:47

标签: iphone ipad uiview ios4 uiviewanimation

我有一个奇怪的问题。我有3个级别的观点:

- MainView
    - containerview
        - subview
            -some buttons
    -some buttons

我制作了一个动画,通过单击主视图中的按钮使我的子视图显示并消失。以下是使子视图消失并重新出现的代码的一部分:

 [UIView animateWithDuration:0.4 //begin animation
                      delay:0.1 
                    options:UIViewAnimationCurveEaseIn 
                 animations:^{
                     [UIView transitionWithView:containerview 
                                       duration:0.4
                                        options:UIViewAnimationOptionTransitionCurlUp
                                     animations:^{ [subView removeFromSuperview] ;}
                                     completion:nil];
                     containerview.alpha = 0;

                 } 
                 completion:^(BOOL finished){
                     saveButton.hidden = true;
                     saveDAVButton.hidden = true;    
                     saveDBButton.hidden = true; 
                     loadButton.hidden = false;
                     openDAVButton.hidden = false;    
                     openDBButton.hidden = false;
                     [UIView transitionWithView:containerview 
                                       duration:0.4
                                        options:UIViewAnimationOptionTransitionCurlDown
                                     animations:^{ [containerview addSubview:subView] ;}
                                     completion:nil];
                     containerview.alpha = 1;
                 }
 ];

此动画效果很好。唯一的问题是即使子视图可见(所以也是子视图按钮),我可以点击子视图后面的按钮! (主视图中的按钮)。这使得子视图中的按钮难以使用,因为它们与masterview中的按钮重叠。

任何想法如何使子视图后面的元素无法点击?

我已经尝试从主视图中禁用和隐藏按钮,但即使这样,我也无法使用子视图中的重叠按钮!

感谢您的帮助。

更新 我发现了问题所在。实际上,我再次让我的帖子更清晰。以下是视图的层次结构,包括位置和大小:

- MainWindow (0,0,768,1024)
    - MainView (0,0,768,80) (this is actually a top tool bar)
        - containerview (500,40,120,80)
            - subview (500,40,120,80) (will act as a post it : curl up and down...)

所以,问题是我的子视图的底部是在MainView之外。单击按钮放置在子视图底部时没有任何反应。事实上,我点击了MainWindow!子视图的Hafl是无法点击的......

在更改我的所有代码之前,即使他是MainView的一部分,有没有办法使子视图的底部可访问?或者我必须在MainWindow中移动它吗?

再次感谢你......

3 个答案:

答案 0 :(得分:1)

切换视图的userInteractionEnabled属性。

答案 1 :(得分:1)

问题可能是主视图中的按钮位于containerView的前面。尝试:

[MainView bringSubviewToFront:containerView];

或者在界面构建器中重新排列containerView的顺序和主视图中的按钮。

但我不知道,将按钮设置为隐藏应该使它们隐藏和不可点击,并防止它们阻挡对它们后面的视图的触摸。

答案 2 :(得分:0)

看到你最新的编辑,或许你可以查看你的clipsToBounds属性(尽管当事情超出父母界限时让一切正常工作可能会很棘手 - 我现在不记得了,但我可能已经放弃并改变了我的包容层次结构)。

相关问题