当自定义leftBarButtonItem(s)左边缘滑动失效时

如何开启:

1.ViewController实现 UIGestureRecognizerDelegate 协议

class YourViewController: UIGestureRecognizerDelegate {

    func viewDidLoad() {
        navigationItem.setLeftBarButtonItems([...,...])   // swipe back 失效了
        self.navigationController?.interactivePopGestureRecognizer.delegate = self    // 启用 swipe back

    }

}

若想禁用Swipe back,可以在viewWillAppear 或者 viewDidAppear里关闭它:

override func viewDidAppear(animated: Bool) {

        navigationController?.interactivePopGestureRecognizer.enabled = false // disable pop gesture

    }

需要注意的是,启用swipe back对当前NavigationController管理的所有viewcontrollers有效,不需要所有的ViewController都调用那个方法,只要保证在同一个UINavigationController里即可。

时间: 2024-11-03 05:28:21

当自定义leftBarButtonItem(s)左边缘滑动失效时的相关文章

IOS开发—视图控制器左边缘右滑pop出栈

IOS视图控制器左边缘右滑pop出栈 IOS7.0之后,苹果优化了一个小功能,就是对于UINavagationController堆栈里的UIViewController,只要轻轻在视图控制器的左边缘右滑一下,该视图控制器就会pop出栈(前提当然是对于非根视图控制器而言).实现方法很简单,一句话搞定: self.navigationController.interactivePopGestureRecognizer.enabled = YES; 事实上对于一个视图控制器而言,该属性的默认值即为Y

iOS 自定义返回按钮,保留系统滑动返回

原文链接 自定义返回按钮保留系统滑动返回手势.gif 1.简介 使用苹果手机,最喜欢的就是用它的滑动返回.作为一个开发者,我们在编写很多页面的时候,总是会因为这样那样的原因使得系统的滑动返回不可用.使用导航栏push出一个控制器,我们在控制器中自定义了一个返回按钮.这样系统默认的滑动返回手势效果就没有了. 2.解决方法 [1]从A这个控制器push到B这个控制器,我们想要自定义B的返回按钮,我们可以在A中设置 self.navigationItem.backBarButtonItem = [[U

完美解决ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题

/******************************************************************************* * Copyright 2011, 2012 Chris Banes. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the Li

Android 自定义ListView控件,滑动删除

1.触摸事件 dispatchTouchEvent 判断是否处理触摸动作 onTouchEvent 处理触摸动作 2.Android对于控制和获取View在屏幕很强大 ListView: pointToPosition 根据触摸点获取item的位置 getChildAt 根据索引获取item的View,注意从第一个可视化的item算起 View: getLocationOnScreen获取View在屏幕的坐标 import android.content.Context; import andr

vue路由左右侧滑动 react路由左右侧滑动

vue路由左右侧滑动: 不用安装插件,自带 <template> <transition name="slide"> <music-list :title="title" :bg-image="bgImage" :songs="songs"></music-list> //需要展示的内容 </transition></template> <style

在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效??

在Vue中使用了Swiper ,动态从后台获取数据的之后,swiper滑动失效?? 是因为swiper提前初始化了,那时候数据还没有完全出来.这里有两种解决办法 1. 使用vue提供的$nextTick()方法 当Vue构造器里的data值被修改完成后会调用这个方法,也相当于一个钩子函数吧,和构造器里的updated生命周期很像. 在数据初始化完毕之后,再初始化swiper就不会出现问题了 this.$nextTick(function () { var swiper = new Swiper(

关于使用css3属性:transform固定菜单位置,在滑动页面时菜单闪现抖动的问题

1 myScroll = new IScroll('#h-s-wrapper', { 2 scrollX: true, 3 scrollY: true, 4 probeType: 3, 5 mouseWheel: true, 6 bounce: false, //锁定边界,不允许拖拽 7 //click: true 8 //preventDefault: false, 9 preventDefaultException: { tagName: /^(INPUT|TEXTAREA|BUTTON|S

memcached缓存失效时的高并发访问问题解决

memcached一般用于在访问一些性能相对低下的数据接口时(如数据库),为了保证这些数据接口的稳定性,加上memcached以减少访问次数,保证这些数据接口的健壮性.一般memcached的数据都是定时失效的,当数据失效时一般会再次去访问取数据接口,然后将其更新至memcached中.这时就会有一个问题,当某个数据失效时,恰好同时有大量的客户端访问该数据,这时这些客户端都会发现该数据失效,然后都会去调用数据接口去取数据更新,这自然就瞬间地使数据接口失去了memcached的保护,有可能造成系统

Extjs中ajax请求当session失效时自动跳转

当session失效时,我们可以通过filter来拦截并重定向到登陆页面,可是请求如果是ajax请求,页面并不会重定向,这是因为ajax返回的是数据,无法返回页面. ajax异步请求不同于其他请求,其在请求头里包含有X-Requested-With:XMLHttpRequest,看下面两张图的区别. 我们可以在filter中通过它来判断一个请求是不是异步的,如果是,我们可以返回一个sessionstatus,在页面上通过判断sessionstatus的值来判断session是否失效. 第一张是普