【问题标题】:iOS6 Twitter integrationiOS6 Twitter 集成
【发布时间】:2012-09-23 09:46:22
【问题描述】:

在检查 Twitter 是否可用时,iPhone 模拟器和实际设备之间似乎存在差异。

我使用以下代码检查是否设置了 Twitter 帐户:[SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter];

在模拟器中有一个很好的 UIAlertView 通知用户没有设置 Twitter 帐户和两个按钮,一个用于设置,一个用于取消。

但是,当我在我的设备上运行我的应用程序时,它不会显示上述UIAlertView。这是为什么?以及如何捕捉上面UIAlertView中点击的按钮(因为我没有实例化它?)

这是它在模拟器上的样子:

【问题讨论】:

    标签: cocoa-touch twitter ios-simulator ios6


    【解决方案1】:

    要处理 Twitter 调用的结果,您可以使用这个 sn-p :

    if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
    {
            SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result){
    
            [twitterController dismissViewControllerAnimated:YES completion:nil];
    
            switch(result){
            case SLComposeViewControllerResultCancelled:
            default:
            {
                NSLog(@"Cancelled.....");
    
            }
                break;
            case SLComposeViewControllerResultDone:
            {
                NSLog(@"Posted....");
            }
                break;
        }};
    
        [twitterController setCompletionHandler:completionHandler];
        ...
        ...
       }
    

    【讨论】:

    • 这不能回答我的问题。
    • 删除此检查会使一切按预期运行 if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) {
    【解决方案2】:

    我也遇到了同样的问题,即设备没有像模拟器那样显示 UIAlert。在Apple修复它之前,这就是我正在做的(不像模拟器那样干净或漂亮,并且需要用户手动转到主屏幕)Apple,请修复它!

    编辑:库存的 Apple 应用程序当然会完美显示 UIAlert,例如:在没有 Twitter/Facebook 帐户的情况下从照片应用程序共享照片将显示正确的 UIAlert。

    if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
        {
            mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
            [mySLComposerSheet setInitialText:@"Check out the app:"];
            [mySLComposerSheet addImage:[UIImage imageNamed:@"test.png"]];
            [mySLComposerSheet addURL:[NSURL URLWithString:@"http://urlofyourapp.com"]];
            [self presentViewController:mySLComposerSheet animated:YES completion:nil];
        }
        else {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"You need to setup an account in the Settings app under Twitter to use this feature." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [alert show];
        }
        [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
    
            if (result == SLComposeViewControllerResultCancelled){[mySLComposerSheet dismissModalViewControllerAnimated:YES];}
            else if (result == SLComposeViewControllerResultDone){[mySLComposerSheet dismissModalViewControllerAnimated:YES];}
    
        }];
    

    【讨论】:

      猜你喜欢
      • 2012-09-15
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 2012-09-21
      • 2012-09-09
      • 2012-01-07
      • 2011-04-29
      • 2011-04-12
      相关资源
      最近更新 更多