2011-02-17 37 views
0

我们的iPad应用程序在UIPopoverController中使用UINavigationController
由导航控制器管理的第二视图是 UITableViewController一个亚类中,其中,当选择了正确的列,推送 GDataOAuthViewControllerTouch,作为 http://code.google.com/p/gdata-objectivec-client/wiki/OAuthSignInControllers描述:Google Reader API:pushViewController和NSURLErrorDomain代码= -1012与presentModalViewController并成功

GDataOAuthViewControllerTouch *googleOAuthViewController = 
[[GDataOAuthViewControllerTouch alloc] initWithScope:@"http://www.google.com/reader/api/*" 
              language:nil 
             appServiceName:kAppServiceName 
              delegate:self 
            finishedSelector:@selector(viewController:finishedWithAuth:error:)]; 

googleOAuthViewController.contentSizeForViewInPopover = CGSizeMake(400.0, 577.0); 
googleOAuthViewController.navigationItem.title = @"Google Account"; 

[self.navigationController pushViewController:googleOAuthViewController animated:YES]; 
[googleOAuthViewController release]; 

成品方法被调用与成功:

- (void)viewController:(GDataOAuthViewControllerTouch *)viewController 
     finishedWithAuth:(GDataOAuthAuthentication *)auth 
       error:(NSError *)error { 
    // error == nil 
} 

然而,当应用程序,然后尝试检索订阅列表中, 要求以某种方式被取消:

Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn\u2019t be completed.

代码-1012是kCFURLErrorUserCancelledAuthentication = -1012(在CFNetworkErrors.h定义 )。

googleOAuthViewController被呈现为一个模态控制器代替:

[self presentModalViewController:googleOAuthViewController animated:YES]; 

然后所请求的数据没有问题检索。

目前尚不清楚当控制器被推入导航控制器以及如何解决这个问题时,请求被取消的原因。

回答

0

我们的应用程序从Google阅读器同步请求用户的订阅列表。

提到的问题发生在googleOAuthViewController位于UINavigationController的堆栈上,而且不是根控制器。完成后,Google的代码在popView方法中弹出控制器GDataOAuthViewControllerTouch.m(gdata-objectivec-client-1.11.0中的行361-375)。不知怎么的popViewControllerAnimated呼叫与请求,在回调执行的干扰(在认证成功):

- (void)viewController:(GDataOAuthViewControllerTouch *)viewController 
     finishedWithAuth:(GDataOAuthAuthentication *)auth 
       error:(NSError *)error 

如果线367通过GDataOAuthViewControllerTouch.m 370被注释掉:

//  isPoppingSelf_ = YES; 

//  [[self navigationController] popViewControllerAnimated:YES]; 
//  [[self view] setHidden:YES]; 

那么请求总是成功。 然后必须在应用程序中弹出Google的视图,请求已完成。

相关问题