代码之家  ›  专栏  ›  技术社区  ›  Jesus

如何删除splitviewcontroller的手势iOS7

  •  2
  • Jesus  · 技术社区  · 11 年前

    我有一个splitView控制器,默认情况下可以用手势打开/隐藏菜单

    enter image description here enter image description here

    这是一个不用编码的好主意,但正如你所看到的,我添加了一个旋转木马,可以使用该手势,但拆分菜单的手势禁用了旋转木马的移动性,这是我获取UISplitViewController的代码:

    用于显示分割视图控制器的代码


    初始VC.m:

    -(void)viewDidAppear:(BOOL)animated{
        UIStoryboard *storyBoard        = [UIStoryboard storyboardWithName:@"iPad" bundle:nil];
    
        if ([[[UIDevice currentDevice]model] hasPrefix:@"iPad"]){
            ViewController    *rightViewController       = [storyBoard instantiateViewControllerWithIdentifier:@"ViewController"];
            rightViewController.navigationItem.titleView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:LOGO_COMPANY]];
            [functions showSplitViewControllerInView:self.view withDetailViewController:rightViewController];
        }
    }
    

    函数.m:

    -(void)showSplitViewControllerInView:(UIView *)view
                withDetailViewController:(id)rightViewController{
    
        UIStoryboard *mainStoryboard        = [UIStoryboard storyboardWithName:@"iPad" bundle: nil];
    
        UINavigationController  *leftNavController;
        UINavigationController  *rightNavController;
    
        MenuPrincipalVC  *leftViewController     = [mainStoryboard instantiateViewControllerWithIdentifier:@"MenuPrincipalVC"];
    
        leftNavController                   = [[UINavigationController alloc] initWithRootViewController:leftViewController];
        rightNavController                  = [[UINavigationController alloc] initWithRootViewController:rightViewController];
    
        leftNavController.toolbarHidden                 = FALSE;
        rightNavController.toolbarHidden                = FALSE;
        leftNavController.navigationBar.translucent     = TRUE;
        rightNavController.navigationBar.translucent    = TRUE;
        leftNavController.toolbar.translucent           = FALSE;
        rightNavController.toolbar.translucent          = TRUE;
    
        UISplitViewController   *splitViewController    = [[UISplitViewController alloc] init];
        splitViewController.viewControllers             = [NSArray arrayWithObjects:leftNavController, rightNavController, nil];
        splitViewController.delegate        = rightViewController;
    
        view.window.rootViewController      = splitViewController;
    }
    

    详细视图控制器上显示/隐藏按钮菜单的代码

    视图控制器.m:

    #pragma mark - UISplitViewDelegate methods
    -(void)splitViewController:(UISplitViewController *)svc
        willHideViewController:(UIViewController *)aViewController
             withBarButtonItem:(UIBarButtonItem *)barButtonItem
          forPopoverController:(UIPopoverController *)pc{
    
        //Grab a reference to the popover
        self.popover = pc;
    
        [barButtonItem setImage:[UIImage imageNamed:@"menuButton.png"]];
    
        UINavigationItem *navItem = self.navigationItem;
        [navItem setLeftBarButtonItem:barButtonItem animated:YES];
    }
    
    -(void)splitViewController:(UISplitViewController *)svc
        willShowViewController:(UIViewController *)aViewController
     invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem{
    
        //Remove the barButtonItem.
        [_navBarItem setLeftBarButtonItem:nil animated:YES];
    
        //Nil out the pointer to the popover.
        _popover = nil;
    }
    #pragma mark -
    
    1 回复  |  直到 11 年前
        1
  •  2
  •   Jesús Ayala    11 年前

    我刚修改了你的方法,你为什么不试试这个呢

    -(void)showSplitViewControllerInView:(UIView *)view
                withDetailViewController:(id)rightViewController{
    
        UIStoryboard *mainStoryboard        = [UIStoryboard storyboardWithName:@"iPad" bundle: nil];
    
        UINavigationController  *leftNavController;
        UINavigationController  *rightNavController;
    
        MenuPrincipalVC  *leftViewController     = [mainStoryboard instantiateViewControllerWithIdentifier:@"MenuPrincipalVC"];
        leftViewController.title            = @" ";
    
    
        leftNavController                   = [[UINavigationController alloc] initWithRootViewController:leftViewController];
        rightNavController                  = [[UINavigationController alloc] initWithRootViewController:rightViewController];
    
        leftNavController.toolbarHidden                 = FALSE;
        rightNavController.toolbarHidden                = FALSE;
        leftNavController.navigationBar.translucent     = TRUE;
        rightNavController.navigationBar.translucent    = TRUE;
        leftNavController.toolbar.translucent           = FALSE;
        rightNavController.toolbar.translucent          = TRUE;
    
        UISplitViewController   *splitViewController    = [[UISplitViewController alloc] init];
        splitViewController.viewControllers             = [NSArray arrayWithObjects:leftNavController, rightNavController, nil];
        splitViewController.delegate                    = rightViewController;
    
        if ([splitViewController respondsToSelector:@selector(setPresentsWithGesture:)]) {
            [splitViewController setPresentsWithGesture:NO];
        }
    
        view.window.rootViewController      = splitViewController;
    }