3

如果我访问 Twitter,我更愿意使用自动警报框,要求用户转到设置,但无法让它工作并提供我自己的默认对话框,我真的不想这样做。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

NSLog(@"indexPath.row %i", indexPath.row);

if (indexPath.row == 0) {

    store = [[ACAccountStore alloc] init]; // Long-lived

    twitterType = [store accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

    [store requestAccessToAccountsWithType:twitterType withCompletionHandler:^(BOOL granted, NSError *error) {

        if (granted) {
            // Access has been granted, now we can access the accounts

            twitterAccounts = [store accountsWithAccountType:twitterType];
            if (twitterAccounts.count == 1) {
                  [self getTwitterData:[twitterAccounts objectAtIndex:0]];

            } else {
                   [self selectTwitterAccount];
            }
        } else {
        // Prefer NOT to do this ************************************
        [self performSelectorOnMainThread:@selector(showTwitterError) withObject:nil waitUntilDone:NO];
        }

    }];
}
4

2 回答 2

1

据我所知,这仅在 iOS 版本 5.0 - 5.0.1 中才有可能。然后在 iOS 5.1 中再次贬值

所以目前没有解决方案......

如果您想使用 iOS 5 部分:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

还有一些关于同一主题的阅读

于 2012-10-09T04:50:52.510 回答
1

这有点棘手,我通过删除子视图得到*TWTWeetComposeViewController*,所以它只在用户未登录时显示警报,通过点击设置按钮,我们可以在我的应用程序中打开设置页面。

     + (void)setAlertForSettingPage :(id)delegate 
    {
     // Set up the built-in twitter composition view controller.
        TWTweetComposeViewController *tweetViewController = [[TWTweetComposeViewController alloc] init];


        // Create the completion handler block.
        [tweetViewController setCompletionHandler:^(TWTweetComposeViewControllerResult result) {
            [delegate dismissModalViewControllerAnimated:YES];
        }];

        // Present the tweet composition view controller modally.
        [delegate presentModalViewController:tweetViewController animated:YES];
        //tweetViewController.view.hidden = YES;
        for (UIView *view in tweetViewController.view.subviews){
            [view removeFromSuperview];
        }

     } 

在这里,delegate 是您的视图控制器,如果您在视图控制器中使用此方法,只需使用self而不是delegate.

我不得不面对同样的问题并找到了这个解决方案

于 2012-10-09T07:25:09.310 回答