Ios 从屏幕边缘在UICollectionView上滑动
向大家致意强> 我有:Ios 从屏幕边缘在UICollectionView上滑动,ios,swift,uicollectionview,uikit,swipe,Ios,Swift,Uicollectionview,Uikit,Swipe,向大家致意 我有: 视图-是UIViewController的主视图 B视图-是视图的UIView和子视图(A_view.addsubview(B_view)) C视图-是视图的UICollectionView和子视图 什么问题? 我无法在父视图控制器中捕捉触摸、滑动事件 class A_viewController: UIViewController,UIGestureRecognizerDelegate{... 我是什么意思? 当我尝试使用以下方式捕捉触摸事件时: override f
- 视图-是UIViewController的主视图
- B视图-是视图的UIView和子视图(A_view.addsubview(B_view))
- C视图-是视图的UICollectionView和子视图
class A_viewController: UIViewController,UIGestureRecognizerDelegate{...
我是什么意思?
当我尝试使用以下方式捕捉触摸事件时:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {...
override func touchsbegind(touch:Set,with event:UIEvent?{。。。
在视图控制器中,我可以看到这样的结果
我尝试通过添加到视图中的UIScreenedGepangestureRecognitor捕捉刷卡信息
触摸视图->触摸开始(…)->工作
在视图上轻扫->UIScreenedGePangestureRecognitor->works
触摸B视图->触摸开始(…)->工作
轻扫B视图->UIScreenedGePangestureRecognitor->works
触摸C视图->触摸开始(…)->不工作
在C视图上滑动->UIScreenedGePangestureRecognitor->不工作
我注意到我可以在C视图控制器中捕捉触摸事件
class A_viewController: UIViewController,UIGestureRecognizerDelegate{...
问题
是否有可能在视图控制器(UIViewController)中捕获在C视图(UICollectionView)上生成的滑动/触摸事件
我的目标
我的目标是创建边栏视图,当我试图捕捉到在屏幕边缘扫过C视图(UICollectionView)时,它只是在内部滚动,但我想在手指启动时打开边栏,覆盖函数:
可选函数手势识别器(\uGestureRecognizer:UIGestureRecognizer,应接收触摸:UITouch)->Bool
在父视图中返回适当的Bool。
请记住,对于userInteractionEnabled
属性设置为true
的视图,该视图中的任何触摸/手势都不会传播到父视图(除非shouldReceive touch
被覆盖以表示其他)
我已将UIgestureRecognitizerDelegate
添加到视图
viewController的父类中
class A_viewController: UIViewController,UIGestureRecognizerDelegate{...
uiscreenedgepangestureerecognizer
添加到视图
-父视图中
let rec = UIScreenEdgePanGestureRecognizer(target: self, action: #selector(handlePanGestRecognizer))
rec.edges = .left
rec.delegate = self
A_view.addGestureRecognizer(rec)
gesturecognizer应开始(…)
catch边缘滑动,并调用handlePangestregnizer(…)
方法生成操作。如果gesturecognizer
是uiscreenedgepangesturecognizer
,则执行操作
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool
{
if gestureRecognizer is UIScreenEdgePanGestureRecognizer
{
handlePanGestRecognizer(recognizer: gestureRecognizer as! UIScreenEdgePanGestureRecognizer)
}
return false
}
recognizer.state.rawvalue
=0,因此当触发handlePangestrerecognizer()
方法时,recognizer.state
不是开始的
func handlePanGestRecognizer(recognizer : UIScreenEdgePanGestureRecognizer){...
如果需要在每个滚动视图上识别边缘滑动手势。(UICollectionView是UIScrollView) 扩展UIScrollView{ 打开覆盖函数GestureRecognitzer应开始(\uGestureRecognitzer:UIGestureRecognitzer)->Bool{ 打印(“手势识别器应开始”) 打印(手势识别器) 将app=UIApplication.shared.delegate设为AppDelegate 如果let view=app?.window?.rootViewController?.view,!(手势识别器是UIScreenedGepangestureRecognitor){ let location=手势识别器。位置(在:视图中) 如果location.x