Ios 滑动返回仅在屏幕边缘有效?

Ios 滑动返回仅在屏幕边缘有效?,ios,swift,storyboard,uistoryboard,ios9,Ios,Swift,Storyboard,Uistoryboard,Ios9,我的“滑动返回”功能可以正常工作,但只能在屏幕边缘工作。如何让它在屏幕上的任何位置工作?滑动返回是推送/显示视图控制器的默认行为。它从屏幕的左边缘开始工作(默认情况下)。如果要从屏幕的任何部分向后滑动,应将UISweepGestureRecognitor添加到视图中: 让swipgesturerecognizer=uiswipgesturerecognizer(目标:self,操作:“didSwipe:”) self.view.addgestureerecognizer(Swipegesture

我的“滑动返回”功能可以正常工作,但只能在屏幕边缘工作。如何让它在屏幕上的任何位置工作?

滑动返回是推送/显示视图控制器的默认行为。它从屏幕的左边缘开始工作(默认情况下)。如果要从屏幕的任何部分向后滑动,应将UISweepGestureRecognitor添加到视图中:
让swipgesturerecognizer=uiswipgesturerecognizer(目标:self,操作:“didSwipe:”)
self.view.addgestureerecognizer(Swipegestureerecognizer)

苹果说:

InteractiveEPPGestureRecognitor

负责弹出俯视图控制器的手势识别器 离开导航堆栈。(只读)

@属性(非原子,只读)UIgestureRecognitor *交互式EPoPGESTURE识别器

导航控制器在其视图上安装此手势识别器 并使用它将最顶部的视图控制器弹出导航 堆栈可以使用此属性检索手势识别器 并将其与用户中其他手势识别器的行为联系起来 接口。将手势识别器连接在一起时,请确保 他们同时识别自己的手势,以确保您的 手势识别器有机会处理该事件

因此,库可定制
UIPangestureRecognitor

查看库,它通过使用UIPangestureRecognitor和重新创建默认动画来实现这一点

SloppySwiper:-
UINavigationController委托,允许从屏幕上的任何位置(如instagram)启动回扫手势

可以找到此库的用法

椰子荚:-pod“SloppySwiper”


我在ios7及更高版本上测试这个库。它就像一个符咒。

UINavigationController
子类上执行此操作实际上非常容易,无需对每个
UIViewController
子类进行任何干预。此外,还考虑了从边缘状态进行的内置滑动(因此,当有意禁用时,新手势也将被禁用):

导入UIKit
类NavigationController:UINavigationController{
重写func viewDidLoad(){
super.viewDidLoad()
SetupFullWidthBack手势()
}
private lazy var fullWidthBackGestureRecognizer=UIPanGestureRecognizer()
private func SetupFullWidthBack手势(){
//这里的诀窍是连接我们的全宽“FullWidthBackgestureRecognitor”,以执行与
//系统“interactivePopGestureRecognizer”。这是通过分配相同的“目标”(有效地
//对象和选择器)添加到我们的手势识别器。
警卫
让InteractiveEPopgestureRecognizer=InteractiveEPopgestureRecognizer,
let targets=interactiveepogesturerecognizer.value(forKey:“targets”)
否则{
返回
}
FullWidthBackgestureRecognitor.setValue(目标,forKey:“目标”)
FullWidthBackgestureRecognitor.delegate=self
view.AddGestureRecognitor(FullWidthBackGestureRecognitor)
}
}
扩展导航控制器:UIgestureRecognitizerDelegate{
func gestureRecognizer应该开始(uGestureRecognizer:UIGestureRecognizer)->Bool{
让IsSystemsWipeToBackebled=InteractiveEPGPEstureRecognitor?.isEnabled==true
让IsThere StackedViewControllers=viewControllers.count>1
返回ISSystemsWipeToBacked和ISThere StackedViewController(&I)
}
}

请分享一些代码。还有您正在使用的UIgestureRecognitor?什么州?请输入密码!我必须在didSwipe函数中添加什么?self.navigationController?.popViewControllerAnimated(true)它可以工作,但我无法像从屏幕边缘控制幻灯片那样控制幻灯片?好的,那么您需要的是在视图控制器之间进行自定义转换的UIPangestureRecognitor。在这里,你可以找到一个很好的答案,并举例说明如何做到这一点:嘿。如何避免
FullWidthBackgestureRecognitor
优先于其他识别器?例如,使用此方法时,
UIContextualAction
的识别器被完全忽略。它们(tableview的识别器)也不能直接访问/它是一个私有API。。。因此,我们无法在导航控制器的
UIgestureRecognitizerDelegate
方法中真正使用它们。有什么线索吗?否则效果很好,谢谢!