我有一个带有按钮的子视图,当点击时会打开地图和位置。代码中没有错误,但一旦我被发送到地图并返回我的应用程序..它再次打开地图。所以我猜这个方法被调用了两次。我该如何阻止它?
- (void)openMaps:(UITapGestureRecognizer *)tapAddress{
PFQuery *query = [PFQuery queryWithClassName:@"outfitDay"];
[query getFirstObjectInBackgroundWithBlock:^(PFObject *object, NSError *error) {
if (!error) {
NSURL *mapUrl = [NSURL URLWithString:[NSString stringWithFormat:@"%@", [object objectForKey:@"map"]]];
if ([[UIApplication sharedApplication] canOpenURL:mapUrl]) {
[[UIApplication sharedApplication] openURL:mapUrl];
} else {
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:nil message:@"Sin Servicio!" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
}
}];
}
答案 0 :(得分:2)
您是否在openMaps:
方法中设置了断点或日志,以确保它不会被意外调用两次?
我的下一个猜测是你的查询返回一个缓存,然后执行网络请求并返回该结果。默认情况下,查询不应该返回缓存,但我已经看到Parse SDK在过去做了一些奇怪的事情。
尝试将查询的cachePolicy设置为kPFCachePolicyNetworkOnly。
query.cachePolicy = kPFCachePolicyNetworkOnly
答案 1 :(得分:1)
如果canOpenURL方法能够确保canOpenURL方法也不会打开吗?