MKMapSnapshotter の startWithCompletionHandler メソッドの完了ハンドラーがコールバックされない理由はありますか? (エラーでもありません!!)
派手なことは何もしていません。スナップショットを取得して表示するだけで、すべてフォアグラウンドでバックグラウンド処理はありません。
珍しいのは、完全にランダムに見えることです。つまり、うまく機能する場合もあれば、まったく機能しない場合もあります。
これが私のコードです:
MKMapSnapshotOptions *options = [[MKMapSnapshotOptions alloc] init];
options.size = somePredeterminedSize;
options.scale = [[UIScreen mainScreen] scale];
options.mapType = MKMapTypeStandard;
options.region = MKCoordinateRegionMakeWithDistance(mycoordinate, 1000, 1000);
MKMapSnapshotter *snapshotter = [[MKMapSnapshotter alloc] initWithOptions:options];
[snapshotter startWithCompletionHandler:^(MKMapSnapshot *snapshot, NSError *error) {
if (error) {
NSLog(@"[Error] %@", error);
return;
}
MKAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation:nil reuseIdentifier:nil];
pin.image = [UIImage imageNamed:@"map-pin"];
UIImage *image = snapshot.image;
UIGraphicsBeginImageContextWithOptions(image.size, YES, image.scale);
[image drawAtPoint:CGPointMake(0.0f, 0.0f)];
CGRect rect = CGRectMake(0.0f, 0.0f, image.size.width, image.size.height);
CGPoint point = [snapshot pointForCoordinate:self.bureau.coordinate];
if (CGRectContainsPoint(rect, point)) {
point.x = point.x + pin.centerOffset.x - (pin.bounds.size.width / 2.0f);
point.y = point.y + pin.centerOffset.y - (pin.bounds.size.height / 2.0f);
[pin.image drawAtPoint:point];
}
UIImage *compositeImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}];
異なる iOS バージョンを実行する複数のデバイスで同時にこれをテストしました。 iOS 8.4 を実行する iPhone 5S iOS 9.2 を実行する iPhone 6 iOS 8.2 を実行する iPhone 6+
3 つのデバイスはすべて同じ WIFI に接続されています。iPhone 6+ はほとんど故障しませんが、iPhone 6 はほとんどの場合故障します。
助言がありますか?