我有一个奇怪的问题。我有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中移动它吗?
再次感谢你......
答案 0 :(得分:1)
切换视图的userInteractionEnabled属性。
答案 1 :(得分:1)
问题可能是主视图中的按钮位于containerView的前面。尝试:
[MainView bringSubviewToFront:containerView];
或者在界面构建器中重新排列containerView的顺序和主视图中的按钮。
但我不知道,将按钮设置为隐藏应该使它们隐藏和不可点击,并防止它们阻挡对它们后面的视图的触摸。
答案 2 :(得分:0)
看到你最新的编辑,或许你可以查看你的clipsToBounds属性(尽管当事情超出父母界限时让一切正常工作可能会很棘手 - 我现在不记得了,但我可能已经放弃并改变了我的包容层次结构)。