1

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

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

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

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

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

在此处输入图像描述

4

2 回答 2

0

要处理 Twitter 调用的结果,您可以使用以下代码段:

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];
    ...
    ...
   }
于 2012-10-03T07:58:18.557 回答
0

我也有同样的问题,设备不像模拟器那样显示 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-10-06T14:31:47.737 回答