暂时禁用与ViewController的用户交互

时间:2013-04-11 12:01:09

标签: objective-c uiviewcontroller

我使用Main ViewController和Navigation ViewController。如果用户使用导航,则导航ViewController占用屏幕的80%,而主视图控制器占用另外20%。在这种情况下,用户不应与Main ViewController进行交互。

如何暂时禁用与主ViewController的交互?


编辑:这声明了进一步的问题:

这部分工作正常。现在,如果导航打开,用户无法与MainViewController进行交互,但这会产生另外两个问题:

问题:用户可以在MainView的位置(右侧应用程序的20%)与NavigationView进行交互。用户不应该进行值得下导航控制器(导航)的交互

问题:用户无法拖动20%的MainView来关闭NavigationView并打开MainView完成。

我认为这可能是禁止与MainView下的所有对象进行交互的原因。如果我在另一个ViewController的功能中执行此操作,这是否可行?困难在于,我应该为不同类型的“MainViews”执行此操作。有时它只包含一个TableViewController,有时它包含一组UIButtons,依此类推。

2 个答案:

答案 0 :(得分:4)

mainViewController.view.userInteractionEnabled = FALSE应该适合你。

这会关闭视图以响应触摸。

答案 1 :(得分:0)

现在我想向您展示我的解决方案,也许有人遇到了类似的问题。 (我希望它没关系,我在新帖子中显示这个而不是编辑,否则我无法检查它已解决)

如果MainViewContent不应该与用户交互:

CGRect viewSize = self.centerView.frame;
UIView *disableInteractionView = [[UIView alloc] initWithFrame:CGRectMake(viewSize.origin.x, (viewSize.origin.y + 44.0), viewSize.size.width, (viewSize.size.height - 44.0))];
disableInteractionView.backgroundColor = [UIColor clearColor];
disableInteractionView.tag = 1234;
[self.centerView addSubview:disableInteractionView];

如果MainViewContent可以自由进行交互:

[[self.centerView viewWithTag:1234] removeFromSuperview];