1

Twitterの有無を確認すると、iPhoneシミュレーターと実機で違いがあるようです。

次のコードを使用して、Twitter アカウントが設定されているかどうかを確認します。[SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter];

シミュレーターには、UIAlertViewTwitter アカウントの設定がなく、設定用とキャンセル用の 2 つのボタンがないことをユーザーに通知する便利な機能があります。

ただし、デバイスでアプリを実行すると、上記は表示されませんUIAlertView。何故ですか?そして、上記でどのボタンがタップされたかをどのようにキャッチできますかUIAlertView(インスタンス化していないので?)

これは、シミュレーターでどのように見えるかです。

ここに画像の説明を入力

4

2 に答える 2

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 に答える
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 に答える