所以我有这个场景:
-NavigationController
-PageViewController
-MapViewController
-UIView
-MKMapView (Full Screen)
-OtherViewController
所以基本上,我希望它在捕获UIScreenEdgeGesture时切换页面(viewcontrollers)。但是将地图放在其中一个中,这不能正常工作。
我已经研究了很多(!)但仍然没有找到正确的解决方案。
我认为这里正确的方法是将此手势委托给层次结构中的nextResponder。
所以当用户在屏幕的左边缘滑动时,我已经成功捕获了手势。
现在我的问题是我无法将手势传递给UIView (MKMapView.superview)。 我有两个问题:
// 1.如何做到这一点 // 2.这是正确的方法吗?
请告诉我你对这个问题的看法!
编辑1: 添加一些故事板的代码和图像
UIScreenEdgePanGestureRecognizer *popRecognizer = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:[self.view superview] action:@selector(handlePopRecognizer:)];
popRecognizer.edges = UIRectEdgeLeft;
popRecognizer.delegate = self;
[self.mapView addGestureRecognizer:popRecognizer];
编辑2:我想要这种行为:Use UIScreenEdgePanGestureRecognizer without moving MKMapView
但是当识别出手势时,我希望它切换到左侧的页面(OtherViewController)
最终编辑:我提出的解决方法包括在地图上放置一个清晰的视图,从而产生所需的行为。对解决方案不满意,但它现在有效。
答案 0 :(得分:0)
创建手势时,将目标设为超级视图,然后在超级视图中调用该方法以执行操作,例如:
UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:[self.view superview] action:@selector(swipeHandler:)];
不知道MKMapView.superview是否可行,这取决于MKMapView是否是一个实例。很难知道你在没有代码的情况下所指的是什么。