0
NSURL *url = [NSURL URLWithString:@"valid_webcal_url"];
if (![[UIApplication sharedApplication] openURL:url])
{
    // failure callback
    NSLog(@"%@%@",@"Failed to open url:",[url description]);
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:LCHLocalizedString(@"SUBSCRIBE_ERROR", nil) message:nil delegate:self cancelButtonTitle:@"Okay" otherButtonTitles: nil];
    [alert show];
}

所以我已经弄清楚如何查看加载 webcal 是否出错,但是我怎么知道 webcal 何时加载成功?当点击“订阅”按钮时,我会显示一个加载器,只需要知道何时将其关闭。

4

2 回答 2

1

因为这是使用openURLwebcal 协议检索项目,所以应用程序和 webcal 检索没有视觉上的分离。

我必须做的是UIApplicationWillResignActiveNotification在调用后监听通知openURL,当通知被触发时,我认为它是 webcal 从我的 openURL 调用中接管。

这是一项棘手的业务和基本的修复,但是嘿,它有效!感谢所有帮助/建议。

于 2013-02-19T20:13:10.663 回答
1

如评论中所述,这会将您的应用程序置于后台,无法保证自动返回。

假设您实际上想要调用一个网页(而不是进行 Web api 调用),您可能应该创建一个UIViewController带有嵌入的自定义子类UIWebView

将您的子类设置为的委托UIWebView将允许您对失败/成功做出反应。您甚至可以拦截和停止UIWebView呼叫- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

于 2013-02-19T20:00:07.930 回答