文档章节

navigationController 自定义返回后,右滑返回失效

Jack088
 Jack088
发布于 2017/04/06 22:11
字数 308
阅读 42
收藏 0
#import "MESNavigationController.h"
#import "HomeViewController.h"

@interface MESNavigationController ()<UINavigationControllerDelegate, UIGestureRecognizerDelegate>

@end

@implementation MESNavigationController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.interactivePopGestureRecognizer.delegate = self;
    self.delegate = self;
    
//    [UINavigationBar appearance].barTintColor = UWORGB_COLOR(0, 126, 259);
    self.navigationBar.barTintColor = UWORGB_COLOR(0, 126, 259);
     [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:UWO_White}];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.
}
*/

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    if (self.viewControllers.count >= 1) {
        viewController.hidesBottomBarWhenPushed = YES;
        
        [viewController.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:UWO_White}];
        
        // 将控制器中的返回按钮进行统一设置
        viewController.navigationItem.leftBarButtonItem = [self addBarItemWithImage:@"icon_left_back" WithHighImage:@"icon_left_back" WithTagetAction:@selector(backClick) WithTarger:self];
    }
    
    if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        self.interactivePopGestureRecognizer.enabled = NO;
    }
    
    [super pushViewController:viewController animated:YES];
}

#pragma mark navigationItem按钮点击事件
- (void)backClick {
    [self popViewControllerAnimated:YES];
}

- (UIBarButtonItem *)addBarItemWithImage:(NSString *)imageName WithHighImage:(NSString *)hightImage WithTagetAction:(SEL)action WithTarger:(id)target{
    
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
    [button setImage:[UIImage imageNamed:hightImage] forState:UIControlStateHighlighted];
    
    CGRect btnRect = CGRectZero;
    btnRect.size = CGSizeMake(30, 30);
    button.frame = btnRect;
    
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];
    return item;
}

#pragma mark - UIGestureRecognizerDelegate 在根视图时不响应interactivePopGestureRecognizer手势
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    if (self.navigationController.viewControllers.count == 1) {
        return NO;
    } else {
        return YES;
    }
}

#pragma mark - navigationDelegate 实现此代理方法也是为防止滑动返回时界面卡死
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    //开启滑动手势
    if ([navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
        navigationController.interactivePopGestureRecognizer.enabled = YES;
    }
}

© 著作权归作者所有

Jack088
粉丝 45
博文 552
码字总数 90026
作品 0
扬州
程序员
私信 提问
边框侧滑返回!!!!!

前言: ios7开始 苹果增加了页面 右滑返回的效果;具体的是以UINavigationController为容器的ViewController间右滑切换页面。 代码里的设置是: self.navigationController.interactivePopGe...

Im刘亚芳
2015/04/20
0
0
右滑返回ios

【转载请注明出处】 iOS 7中在传统的左上角返回键之外,提供了右滑返回上一级界面的手势。支持此手势的是UINavigationController中新增的属性 interactivePopGestureRecognizer,即右滑返回只...

hanbing94
2015/09/09
943
0
UINavigationController返回手势失效问题

从iOS7开始,系统为UINavigationController提供了一个interactivePopGestureRecognizer用于右滑返回(pop),但是,如果自定了back button或者隐藏了navigationBar,该手势就失效了。 这是为什么...

cuibo1123
2015/07/11
0
0
iOS7之后经过滑动返回导航栏隐藏和显示带来的坑

Apple 自从iOS7之后增加了屏幕边缘右滑返回交互的支持,再配合UINavigationController的交换动画,pop上一级的操作变的非常带感,从此我很少使用点击左上角导航栏返回按钮了的方式返回.如果一个...

秦无炎
2016/09/07
65
0
iOS 单个页面需要隐藏导航栏

在一个navigation堆栈中,有一些特殊的控制器需要隐藏顶部的导航栏 ,一般情况下可能会想到在viewwillappear中设置setNavigationBarHidden = YES 这样,然后再在viewwilldisappear中再将set...

山里来的
2016/11/16
143
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
今天
9
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
今天
6
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
今天
8
0
Flutter 系列之Dart语言概述

Dart语言与其他语言究竟有什么不同呢?在已有的编程语言经验的基础上,我们该如何快速上手呢?本篇文章从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧 一、...

過愙
今天
5
0
rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部