【发布时间】:2014-09-16 07:57:52
【问题描述】:
我正在构建一个 iOS 应用程序。我有一个 UIWebView 作为子视图添加到 self.view,然后是另一个视图,即 mapView,作为 Web 视图的子视图添加。但是 mapView 被发送到 webView 的后面。 webView 的背景是透明的,因此可以看到地图。 看代码:
[self.webView addSubview: self.mapView];
[self.webView sendSubviewToBack: self.mapView];
我想做的是将 webView 的手势传递给 mapView,以便用户可以拖动地图。
我已将 webView 和 mapView 的 cancelsTouchesInView 属性标记为 NO。
我为 webView 添加了一个手势识别器。选择器确实被调用。但是接下来我该怎么做呢?
self.webPanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action: @selector(handleWebPanGesture:)];
[self.webView addGestureRecognizer: self.webPanGesture];
我在 webView 选择器中调用了 gestureRecognizerShouldBegin 方法,但它不起作用。
- ( void ) handleWebPanGesture: ( UIPanGestureRecognizer *)gesture
{
NSLog(@"WebPanGesture recognizer called!");
[self.mapView gestureRecognizerShouldBegin: gesture];
[self panAction: gesture];
self.mapPanGesture = gesture; // the mapPanGesture property is the Gesture recognizer for the map
}
我也调用这个函数
- ( IBAction )panAction:(UIPanGestureRecognizer *)sender {
NSLog(@"panAction called!");
CGPoint move = [sender translationInView:self.webView];
CGPoint newCenter = subViewCenter;
newCenter.x += move.x; newCenter.y += move.y;
self.myMapView.mapView.center = newCenter;
}
但它不会使地图可拖动,它只是移动它。
self.mapPanGesture = gesture //doesn't work as well.
如何将操作定位到 mapView 以便在 webView 上拖动时拖动地图?
【问题讨论】:
-
但是你这样做有什么意义呢?为什么地图在webview后面?你想达到什么目的?
-
问题是有html元素必须在地图上方,所以我把地图放在底部。
-
好的,但最后你可以分别显示,而不是一个在另一个后面。
-
顺便说一句,我还尝试使用 CALayer 掩码来显示按钮。但这更难。
-
如果您需要地图上的按钮,然后以编程方式创建一个按钮并将其作为子视图添加到 mapView。
标签: ios objective-c uigesturerecognizer subview hittest