私たちのiPadアプリはでを使用しUINavigationController
ていUIPopoverController
ます。
ナビゲーションコントローラーによって管理される2番目のビューは、のサブクラスであり
、 http: //code.google.com/p/gdata-objectivec-client/wiki/OAuthSignInControllersで説明されているように
UITableViewController
、正しい行が選択されると、をプッシュ
します。GDataOAuthViewControllerTouch
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];
その後、要求されたデータは問題なく取得されます。
コントローラがナビゲーションコントローラにプッシュされたときにリクエストがキャンセルされる原因と、これを修正する方法は明確ではありません。