Iphone 将UINavigationBar移出屏幕,但下面的区域不可触摸

Iphone 将UINavigationBar移出屏幕,但下面的区域不可触摸,iphone,ios,Iphone,Ios,我正在尝试创建一个类似于“路径”应用程序中的“区域选择器”。 这个想法是在导航栏上有一个按钮,可以触发控制器滑开,显示一个数据“选择器” 给定以下UI结构: 主控制器是一个UINavigationController,因为我以后需要添加更多级别的信息 基本上它是这样工作的: 应用程序从前台的数据表开始。用户可以单击数据或左上角的导航项 单击导航项后,它会将导航栏、工具栏和表视图移到一旁,以显示选择器表视图: 将所有东西移开的代码是: - (IBAction)toggleAreaSelect

我正在尝试创建一个类似于“路径”应用程序中的“区域选择器”。 这个想法是在导航栏上有一个按钮,可以触发控制器滑开,显示一个数据“选择器”

给定以下UI结构:

主控制器是一个UINavigationController,因为我以后需要添加更多级别的信息

基本上它是这样工作的:

应用程序从前台的数据表开始。用户可以单击数据或左上角的导航项

单击导航项后,它会将导航栏、工具栏和表视图移到一旁,以显示选择器表视图:

将所有东西移开的代码是:

- (IBAction)toggleAreaSelector:(id) sender {
    float offsetX = self.tableView.frame.origin.x == 0 ? 300 : -300;

    [UIView animateWithDuration:0.3f delay:0 options:UIViewAnimationCurveEaseIn animations:^{
        self.navigationController.navigationBar.frame = CGRectOffset(self.navigationController.navigationBar.frame, offsetX, 0);
        self.toolBar.frame = CGRectOffset(self.toolBar.frame, offsetX, 0);
        self.tableView.frame = CGRectOffset(self.tableView.frame, offsetX, 0);
    } completion:^(BOOL finished) {
        self.navigationController.navigationBar.userInteractionEnabled = offsetX == 300 ? NO : YES;
        self.tableView.userInteractionEnabled = offsetX == 300 ? NO : YES;
    }];
}
问题是:我无法单击选择器中的第一项“区域0”。我认为这是因为
UINavigationBar
仍然保持对该区域的“触摸”锁定,并接收所有触摸

也许这也是因为,当在interface builder中可见时,我也可以看到选择器视图位于
UINavigationBar
后面。毕竟,这可能是错误的做法


谢谢你的建议。

你为什么要把它移出屏幕?为什么不把新的视图控制器和新的tableview一起推到你的区域呢

Areas *secondViewController = [[Areas alloc] initWithNibName:@"Areas" bundle:nil];
[self.navigationController pushViewController:secondViewController animated:YES];
[secondViewController release];

很高兴现在找到了解决办法

@jonkroll`的链接是最有用的,因为以前有人成功地尝试过实现这种UI模式

关键问题是如何使用

[self addChildViewController:self.leftViewController];
[self.view addSubview:self.leftViewController.view];
这样,每个视图控制器都可以独立管理,而且最重要的是:其视图也是如此


完成此操作后,管理控制器可以对这些视图执行几乎所有操作。

我不确定答案,但这是其他人对相同导航想法的实现。很好的链接,谢谢!实际上,这一个突出了关键问题imho:它应该是用于左侧、中间和(如果需要)右侧的独立视图控制器。这样每个控制器都有自己的视图,我遇到的问题就不会发生。谢谢你的启示。:)您可以查看发送的链接
jonkroll
,获取我想到的应用程序结构的演示: