UIApplication sharedApplication调用了两次

时间:2014-05-03 15:38:11

标签: ios maps uiapplication

我有一个带有按钮的子视图,当点击时会打开地图和位置。代码中没有错误,但一旦我被发送到地图并返回我的应用程序..它再次打开地图。所以我猜这个方法被调用了两次。我该如何阻止它?

- (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];
        }


    }
}];
}

2 个答案:

答案 0 :(得分:2)

您是否在openMaps:方法中设置了断点或日志,以确保它不会被意外调用两次?

我的下一个猜测是你的查询返回一个缓存,然后执行网络请求并返回该结果。默认情况下,查询不应该返回缓存,但我已经看到Parse SDK在过去做了一些奇怪的事情。

尝试将查询的cachePolicy设置为kPFCachePolicyNetworkOnly。

query.cachePolicy = kPFCachePolicyNetworkOnly

答案 1 :(得分:1)

如果canOpenURL方法能够确保canOpenURL方法也不会打开吗?