iphone 株価 Twitter Post iOS6の「キャンセル」ボタンの問題




twitter iphone 不具合 (4)

iOS 6とiPhone用にアプリを変更する過程にあります。新しいソーシャルフレームワークを使用してTwitterから投稿するときに[キャンセル]を2回押す必要がある理由を理解できないようです。問題や解決策は? これがボタンのコードです。

- (IBAction)twitterPost:(id)sender
{
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
    mySLComposerSheet = [[SLComposeViewController alloc] init];
    mySLComposerSheet = [SLComposeViewController   composeViewControllerForServiceType:SLServiceTypeTwitter];
    [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"This is my tweet, hello!",mySLComposerSheet.serviceType]];
    [self presentViewController:mySLComposerSheet animated:YES completion:nil];
}
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
    NSLog(@"dfsdf");
    switch (result) {
        case SLComposeViewControllerResultCancelled:
            break;
        case SLComposeViewControllerResultDone:
            break;
        default:
            break;
    }
}];


}

SLComposeViewControllerを使った私の経験では、TwitterとWeiboのコントローラーは手動で却下する必要がありますが、Facebookのコントローラーの方がうまく動作するようです。

ViewControllerAnimatedを消さない場合は、[送信]ボタンをタップするとツイートまたはWeibo投稿が送信されますが、自分のビューには表示されないビューが表示されます。 したがって、私は自分のアプリとやり取りすることはできなくなります。

私のアプリがこのように動作している理由はわかりません。興味深いことに、cancelのcompletionHandlerは一度だけ呼び出されます。 2回目のタップでView Controllerが閉じます。

+ (void) shareText:(NSString*)text image:(UIImage*)image social:(NSString*)service url:(NSString*)url
{
    SLComposeViewController*    controller = [SLComposeViewController composeViewControllerForServiceType:service];

    [controller setInitialText:text];
    [controller addImage:image];
    [controller addURL:[NSURL URLWithString:url]];

    controller.completionHandler = ^(SLComposeViewControllerResult result) {
        if( SLComposeViewControllerResultDone == result )
        {
            NSLog(@"rewards for share: %@!", service );
        }
        if( ![SLServiceTypeFacebook isEqualToString:service] )  // facebook behaves
            [[CBLAppDelegate instance].activeViewController dismissViewControllerAnimated:true completion:nil];
    };
    [[CBLAppDelegate instance].activeViewController presentViewController:controller animated:true completion:nil];
}

回答として上記のコメントを投稿する:

View Controllerを表示する前にcompletionHandlerを設定してみましたか?


この仲間を試してください

   [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {

        switch (result) {
            case SLComposeViewControllerResultCancelled:
                [self performSelector:@selector(showalert)];
                [mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
                break;
            case SLComposeViewControllerResultDone:
                [self performSelector:@selector(showalert1)];
                [mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
                break;

            default:
                break;


        }
    }];

問題を見つけました。 完了ハンドラーがTWTweetComposeViewControllerに追加されたときにのみ発生します。 追加した場合は、必ず電話してください。

[self dismissModalViewControllerAnimated:YES];