Ios 如何将控制从一个手势识别器传递到另一个手势识别器
我有以下设置Ios 如何将控制从一个手势识别器传递到另一个手势识别器,ios,swift,uipangesturerecognizer,Ios,Swift,Uipangesturerecognizer,我有以下设置 主视图控制器(MainViewController)包含父子视图控制器配置中的另一个视图控制器(ListViewController) ListVC从MainVC底部的某个地方开始。ListVC在顶部包含UIView,在底部包含一个表视图。桌子视图附带了一个平移手势识别器 我想要实现的是,当我通过平移手势向上拉动ListVC时,它会向上移动到屏幕顶部。当它到达顶部(或者更准确地说,在顶部布局指南下方的一段距离)时,listVC停止在mainVC中移动,表视图开始滚动。这几乎就像
- 主视图控制器(MainViewController)包含父子视图控制器配置中的另一个视图控制器(ListViewController)
- ListVC从MainVC底部的某个地方开始。ListVC在顶部包含UIView,在底部包含一个表视图。桌子视图附带了一个平移手势识别器
UIgestureRecognitizerDelegate
协议
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
及
及
如果listVC未达到顶部,则pullGesutre是一个优先级。通过设置self.pullspirture.isEnabled=false
,然后紧接着设置self.pullspirture.isEnabled=true
,我使Pullspirture失败
现在一切都好了;我能够在不向上滚动表视图的情况下将其向上拉,当listVC到达顶部时,我的拉手势失败,因此表视图开始向上滚动。当我向下滚动表格视图直到到达表格视图的顶部时,问题就出现了,在这一点上,我希望listVC会通过拉动手势下降。但这并没有发生。不知何故,Pull手势已从触摸事件链中移除
有人知道我怎样才能做到这一点吗
请注意,我实际上是在尝试将苹果的做法复制到iOS 10的地图上。我还附加了一个小gif来演示我的意思
可以在这里找到一个演示项目
如果您希望在两个视图控制器之间发送“事件”或“操作”,则可以使用sendAction
- (1) 添加一个UIButton,将框架设置为CGRect.zero,将其添加到ListVC
- (2) 在要联系MainVC的ListVC代码中,添加以下行:
myButton.sendAction(Selector(("tapFound")), to: nil, for: nil)
- (3) 在MainVC中,添加以下函数:
func tapFound() { }
我以前在一些应用程序中这样做过,告诉主VC在新的子视图中添加一些内容。您甚至可以将发送者(UITARecognizer不是)传递给新的视图控制器,并将tag属性设置为让VC确切知道所需内容。我通过在我的平移手势函数中添加此项解决了此问题
guard scrollView.contentOffset.y == 0 else{return}
因此,每当它到达顶部(滚动视图)时,它就会开始向下平移你能分享一个演示项目吗?@BlackM,我添加了一个演示项目。你解决了这个问题吗?
func tapFound() {
}
guard scrollView.contentOffset.y == 0 else{return}