Ios 将默认InteractivePostureRecognitor扩展到屏幕边缘之外?

Ios 将默认InteractivePostureRecognitor扩展到屏幕边缘之外?,ios,objective-c,ios7,Ios,Objective C,Ios7,我有一个UIViewController,它被推到导航堆栈上。我想扩展标准的iOS7交互式平移手势,将此视图控制器弹出到默认的UIRectEdgeLeft边界之外,以便用户可以通过从视图上的任何位置平移来启动交互式后退操作 我已经尝试过滚动我自己的交互式视图控制器转换,但是要完全复制默认的interactiveepgpgesturecognitioner的良好视差处理非常麻烦。例如,fromViewController隐藏了导航栏,而toViewController显示了一些在自定义交互转换中不

我有一个
UIViewController
,它被推到导航堆栈上。我想扩展标准的iOS7交互式平移手势,将此视图控制器弹出到默认的
UIRectEdgeLeft
边界之外,以便用户可以通过从视图上的任何位置平移来启动交互式后退操作

我已经尝试过滚动我自己的交互式视图控制器转换,但是要完全复制默认的
interactiveepgpgesturecognitioner
的良好视差处理非常麻烦。例如,
fromViewController
隐藏了导航栏,而
toViewController
显示了一些在自定义交互转换中不容易处理的内容,但在默认操作中是无缝的

因此,我想将默认操作扩展到更大的平移手势区域,但API似乎不支持简单地替换手势


有任何创造性的建议吗?

请查看我的库,它通过使用
UIPangestureRecognitor
并通过重新创建默认动画来实现这一点。您还可以在中看到我的想法。

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)
}
}

尝试在整个视图上创建平移手势识别器,并将代理设置为导航控制器。不确定它是否有效,所以将其作为评论发布。我知道导航控制器可以作为边缘手势识别器的代表。可能对潘也有用。编辑得好,谢谢。“我有点懒了。”莱昂纳坦我试过这种方法。仅将平移手势的代理指定给导航控制器不起作用。(在我的例子中,我还有一个自定义导航控制器类,它采用了
UINavigationControllerDelegate
uigestureRecognitizerDelegate
协议。)为了更好地衡量(即绝望),我尝试将手势的委托分配给self.navigationController.InteractiveProgestureRecognitizer,但这也是一条死胡同。你明白了吗?[这里][1]链接[1]中提供的问题答案:太棒了!谢谢。我偶然发现了同样的问题,看到了你的答案。我已经安装了项目,并按照说明将其添加到导航控制器中。然而,现在一切都不起作用。甚至不是默认的边缘手势识别器。知道为什么吗?检测到私有API。非常好。“这对我帮助很大。”ThuanNguyen很乐意帮忙。请随意投票选出答案。