【问题标题】:UIPageViewController as sub view will disable main view events in iOSUIPageViewController 作为子视图将禁用 iOS 中的主视图事件
【发布时间】:2014-07-30 22:39:01
【问题描述】:

我正在尝试使用 UIPageViewController 创建具有三个独立 UIViewController 的演练屏幕。总而言之,我的故事板中有四个视图控制器和一个页面视图控制器。一个视图控制器充当基础视图 (XYZViewController.h/m),其他三个充当加载在基础视图控制器内部的子视图。下面显示了 XYZViewController.h 的粗略显示。

#import <UIKit/UIKit.h>
#import “XYZPageContentViewController.h"
#import "XYZPageTwoContentViewController.h"
#import "XYZPageThreeContentViewController.h"

@interface XYZViewController : UIViewController <UIPageViewControllerDataSource>

@property (strong, nonatomic) UIPageViewController *pageViewController;

@end

下面的代码sn-p展示了XYZViewController.m

viewDidLoad方法
- (void)viewDidLoad
{
    [super viewDidLoad];

    self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"];
    self.pageViewController.dataSource = self;

    XYZPageContentViewController *startingViewController = [self viewControllerAtIndex:0];

    NSArray *viewControllers = @[startingViewController];

    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];

    self.pageViewController.view.frame = CGRectMake(0, 60, self.view.frame.size.width, self.view.frame.size.height - 60);

    [self addChildViewController:_pageViewController];
    [self.view addSubview:_pageViewController.view];
    [self.pageViewController didMoveToParentViewController:self];

    bottomView.layer.zPosition = 1;
    startBtnOutlet.layer.zPosition = 1;
}

实际上,加载子视图和演练效果很好。不起作用的是,我在基本视图中声明的事件内部的按钮修饰。

如图所示,屏幕底部有“重新开始”按钮。起初,当我将页面控制器视图设置到屏幕底部并且不使用 z-index 选项时,该视图甚至没有显示。

这意味着有这条线

self.pageViewController.view.frame = CGRectMake(0, 60, self.view.frame.size.width, self.view.frame.size.height - 60);

注释以下行。

// bottomView.layer.zPosition = 1;
// startBtnOutlet.layer.zPosition = 1;

我需要的是限制灰色视图开始的页面视图控制器,并且子视图可用直到屏幕结束。我可以如上所述限制页面视图控制器框架,然后它也适用于我的所有演练屏幕。我可以为此做些什么?

我已关注this tutorial。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: ios objective-c ios7 uiview uipageviewcontroller


    【解决方案1】:

    找到了解决办法。

    在代码行下方保留注释。

    // bottomView.layer.zPosition = 1;
    // startBtnOutlet.layer.zPosition = 1;
    

    viewDidLoad 方法内的代码下方添加这一行

    [self.view sendSubviewToBack:_pageViewController.view];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多