2015-09-28 37 views
3

当用户没有从拾取器视图中选择任何位置并按下“返回”按钮时,GMSPlacePicker正在崩溃。在iOS 9中使用GMSPlace拾取器时发生应用程序崩溃

ERROR:

- [一个UIWindow _shouldAnimatePropertyWithKey:]:消息发送到释放的实例

代码:

- (void)findNearByPlace :(CLLocationCoordinate2D)center { 


CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(center.latitude + 0.001, 
                   center.longitude + 0.001); 
CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(center.latitude - 0.001, 
                   center.longitude - 0.001); 
GMSCoordinateBounds *viewport = [[GMSCoordinateBounds alloc] initWithCoordinate:northEast 
                    coordinate:southWest]; 
GMSPlacePickerConfig *config = [[GMSPlacePickerConfig alloc] initWithViewport:viewport]; 
_placePicker = [[GMSPlacePicker alloc] initWithConfig:config]; 

[_placePicker pickPlaceWithCallback:^(GMSPlace *place, NSError *error) { 
    if (error != nil) { 
     NSLog(@"Pick Place error %@", [error localizedDescription]); 
     return; 
    } 
    if (place != nil) { 
     NSLog(@"Place name:%@",place.formattedAddress); 
     placeName = place.name; 
     placeAddress = place.formattedAddress; 
     //hide previous marker 
     self.mapMarker.map = nil; 
     self.locaitonTitle = place.name; 
     self.locationAddress = place.formattedAddress; 
     self.mapMarker = [GMSMarker markerWithPosition:place.coordinate]; 
     self.mapMarker.icon = [UIImage imageNamed:@"ic_ellipse_black.png"]; 
     mapLattitude = place.coordinate.latitude; 
     mapLongitude = place.coordinate.longitude; 
     self.mapMarker.draggable = YES; 
     markerTag = @"2"; 
     markerDefault = @"default"; 
     self.mapMarker.userData = @{}; 
     self.mapMarker.map = self.mapView_; 
     [self showLocationPopUp:placeName address:placeAddress withCoord:place.coordinate]; 
     //[self showLocationFoundView]; 
    } else { 

     [self addOwnLocation : longPressCoord]; 
     NSLog(@"No Place is selected yet"); 
    } 
}]; 

}

任何解决方案?

+0

这无关于你的代码它的东西与GMSPlacePicker库中的iOS 9 可以调试启用僵尸对象,看看有什么被释放。 – Imran

+0

我已经启用了zoombie对象。但没有成功。 –

回答

0

我们遇到了同样的问题。我们的解决方案是通过隐藏导航栏来禁用Back导航按钮。

的Objective-C:

[placePicker pickPlaceWithCallback:^(GMSPlace * __nullable result, NSError * __nullable error) { 
    //DO SOMETHING 
}]; 

//Hide the navigation bar 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    UINavigationController *rootViewController = (UINavigationController *)[[[UIApplication sharedApplication] keyWindow] rootViewController]; 
    rootViewController.navigationBarHidden = true; 
}); 

斯威夫特:

placePicker.pickPlaceWithCallback({ (place: GMSPlace?, error: NSError?) -> Void in 
    //DO SOMETHING  
}) 

//Hide the navigation bar 
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC))) 
dispatch_after(delayTime, dispatch_get_main_queue(), {() -> Void in 
    let rootViewController = UIApplication.sharedApplication().keyWindow?.rootViewController 
    (rootViewController as! UINavigationController).navigationBarHidden = true 
}) 
+0

感谢您的答案,但我需要在我的应用程序中的后退按钮功能。 –

+0

@RituGarodia,这只是一个解决方法。我不知道它是否已经修复。 – yoninja

+1

此崩溃已在Google Maps 1.10.4 sdk中修复。 –

相关问题