在模态UIView后面的UIView上禁用元素

时间:2011-01-07 13:21:26

标签: iphone objective-c background modal-view

我有一个小于superview的UIView,所以当单击一个按钮时,我可以将此视图表示为模态视图。

我设法做了以下事情: *在superview中添加子视图。 *以模态视图为中心

我现在正试图让UIView背后的元素无法点击。并且还在我的模态视图中添加灰色阴影,以便用户理解模态视图是焦点视图。

我想知道如何实现这一点。

我不希望使用演示模式转换。我知道并且已经在其他项目中实现了这一点。 任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:10)

最简单的方法是在“模态”视图后面放置一个半透明灰色背景的全屏UIView。然后它将拦截所有的触摸。它可能看起来像这样:

UIView *dimBackgroundView = [[UIView alloc] initWithFrame:theSuperview.bounds];
dimBackgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];

[theSuperview addSubview:dimBackgroundView];
[theSuperview addSubview:modalView];

为了将来参考,您可以设置myView.userInteractionEnabled = NO以禁用视图上的触摸事件。

答案 1 :(得分:0)

有几种方法可以做到这一点。 如果您有一个具有自定义位置的自定义视图,您可以像这样修改它:

创建实例var

UIView* backgroundView;

无论何时需要,请将其放在自定义视图后面:

if (backgroundView == nil)
        backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.height, [UIScreen mainScreen].bounds.size.width)];
backgroundView.backgroundColor = [[UIColor grayColor] colorWithAlphaComponent:.5f];
[self.view addSubview:backgroundView];
[backgroundView animateBump:customView.view];
[backgroundView addSubview:customView.view];

当你不再需要它时

   [backgroundView removeFromSuperview];