zoukankan      html  css  js  c++  java
  • iOS 中导航控制器全屏向右滑动返回上一界面

    在iOS中,导航控制器默认就自带了侧滑功能,当用户在界面的左边(左边边缘)滑动的时候,才会有侧滑功能。但是我们往往在开发的过程中需要在屏幕的任意位置滑动,都需要返回到上一个界面。

    多说无意,直接看代码:

    效果图部分:

    代码部分(第二个界面):

    #import "CJSecondViewController.h"

    @interface CJSecondViewController ()<UIGestureRecognizerDelegate>

    @end

    @implementation CJSecondViewController

    - (void)viewDidLoad {

        [super viewDidLoad];

        

        NSLog(@"%@",self.navigationController.interactivePopGestureRecognizer);

        

        // 获取系统自带滑动手势的target对象

        id target = self.navigationController.interactivePopGestureRecognizer.delegate;

        // 创建全屏滑动手势,调用系统自带滑动手势的target的action方法

        UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];

        // 设置手势代理,拦截手势触发

        pan.delegate = self;

        // 给导航控制器的view添加全屏滑动手势

        [self.view addGestureRecognizer:pan];

        // 禁止使用系统自带的滑动手势

        self.navigationController.interactivePopGestureRecognizer.enabled = NO;

        

        // Do any additional setup after loading the view.

        self.view.backgroundColor = [UIColor whiteColor];

        

        self.title = @"图片展示";

        

        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 200, 200, 200)];

        imageView.image = [UIImage imageNamed:@"4.jpg"];

        [self.view addSubview:imageView];

    }

    // 什么时候调用:每次触发手势之前都会询问下代理,是否触发。

    // 作用:拦截手势触发

    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{

        // 注意:只有非根控制器才有滑动返回功能,根控制器没有。

        // 判断导航控制器是否只有一个子控制器,如果只有一个子控制器,肯定是根控制器

        if (self.childViewControllers.count == 1) {

            // 表示用户在根控制器界面,就不需要触发滑动手势,

            return NO;

        }

        return YES;

    }

    @end

    具体原因和详情信息请继续查看:http://www.cocoachina.com/ios/20150811/12897.html

  • 相关阅读:
    184. Department Highest Salary【leetcode】sql,join on
    181. Employees Earning More Than Their Managers【leetcode】,sql,inner join ,where
    178. Rank Scores【leetcode】,sql
    177. Nth Highest Salary【leetcode】,第n高数值,sql,limit,offset
    176. Second Highest Salary【取表中第二高的值】,sql,limit,offset
    118. Pascal's Triangle【LeetCode】,java,算法,杨辉三角
    204. Count Primes【leetcode】java,算法,质数
    202. Happy Number【leetcode】java,hashSet,算法
    41. First Missing Positive【leetcode】寻找第一个丢失的整数,java,算法
    删除
  • 原文地址:https://www.cnblogs.com/chenjie-ios/p/4724788.html
Copyright © 2011-2022 走看看