我一直在墙上撞了一会儿,但这就是它。我正在使用PhoneGap来构建应用程序。底部有一个标签栏,有5个标签,一个标签加载谷歌地图(来自GitHub旧插件的MapKit)但问题是当你在地图选项卡中切换到另一个标签时,新选项卡会不接受触摸事件,好像地图仍在那里。 (地图不可见,方法如下:
self.mapView.hidden = YES;
self.childView.hidden = YES;
但是如果你这样做:地图选项卡 - >主页标签 - >然后,通知选项卡会在通知选项卡上触摸事件。
我认为解决这个问题的方法是以某种方式将PhoneGap使用的UIWebview带到前面。
我试过了:
[self.childView bringSubviewToFront:self.webView];
和
[self.webView bringSubviewToFront:self.mapView];
还有:
[self.viewController bringSubviewToFront:self.webView]
最后一行代码给出了这个错误:'UIViewController'可能无法响应'bringSubviewToFront:'而且没有任何反应。
以下是用于绘制地图的代码:
if (!self.mapView)
{
[self createView];
}
// defaults
CGFloat height = 480.0f;
CGFloat offsetTop = 0.0f;
if ([options objectForKey:@"height"])
{
height=[[options objectForKey:@"height"] floatValue];
}
if ([options objectForKey:@"offsetTop"])
{
offsetTop=[[options objectForKey:@"offsetTop"] floatValue];
}
if ([options objectForKey:@"buttonCallback"])
{
self.buttonCallback=[[options objectForKey:@"buttonCallback"] description];
}
if ([options objectForKey:@"regionDidChangeCallback"])
{
self.regionDidChangeCallback=[[options objectForKey:@"regionDidChangeCallback"] description];
}
CLLocationCoordinate2D centerCoord = { [[options objectForKey:@"lat"] floatValue] , [[options objectForKey:@"lon"] floatValue] };
CLLocationDistance diameter = [[options objectForKey:@"diameter"] floatValue];
CGRect webViewBounds = self.webView.bounds;
CGRect mapBounds;
mapBounds = CGRectMake(
webViewBounds.origin.x,
webViewBounds.origin.y + (offsetTop / 2),
webViewBounds.size.width,
webViewBounds.origin.y + height
);
[self.childView setFrame:mapBounds];
[self.mapView setFrame:mapBounds];
MKCoordinateRegion region=[ self.mapView regionThatFits: MKCoordinateRegionMakeWithDistance(centerCoord,
diameter*(height / webViewBounds.size.width),
diameter*(height / webViewBounds.size.width))];
[self.mapView setRegion:region animated:YES];
非常感谢任何帮助。
答案 0 :(得分:1)
你不能在viewController对象上调用方法bringSubviewToFront:因为UIViewController不会响应那个。你可以按照以下方式进行改变,
错误:
[self.viewController bringSubviewToFront:self.webView];
对:
[self.viewController.view bringSubviewToFront:self.webView];
我认为这对你有用。