SLComposeViewController取消不会从一次点击关闭VC

时间:2013-07-02 13:24:37

标签: objective-c social-framework

我对附加的密码有问题。当用户点击取消按钮上的 一次 而不是 两次 时,它必须关闭当前显示的modalViewController,因为它现在做。

代码

- (BOOL)isIOS6 {
    BOOL native = YES;
    if([[[UIDevice currentDevice] systemVersion] floatValue] < 6.0f){
        native = NO;
    }
    return  native;
}

- (void)twitterShare {
    DLog(@"is ios6: %d", [self isIOS6]);

    if ([self isIOS6]) {

        if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
        {
            NSString *textToShare = @"Test";
            SLComposeViewController *twitterComposeViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
            twitterComposeViewController.completionHandler = ^(SLComposeViewControllerResult result){
                DLog(@"result: %d", result);

                if (result == 1) {
                    Dlog(@"Shared");
                    [[NSNotificationCenter defaultCenter] postNotificationName:@"notitificationName" object:nil];
                    DLog(@"Sended provide bonus notification");
                    [self disableButtonWithTag:GrowthButtonTwitterConnectTag];
                    DLog(@"disable that button.");
                } else {
                    Dlog(@"canceled...");
                }
            };

            [twitterComposeViewController setInitialText:textToShare];
            [self presentViewController:twitterComposeViewController animated:YES completion:nil];

        } else {
            DLog(@"Twitter not available");
        }

    } else {
        // iOS 5 not supported message
        [[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ATTENTION", nil)
                                     message:NSLocalizedString(@"IOS6_OR_ABOVE_FEATURE", nil)
                                    delegate:nil
                           cancelButtonTitle:NSLocalizedString(@"OK", nil)
                           otherButtonTitles:nil, nil] autorelease] show];
    }

}

1 个答案:

答案 0 :(得分:1)

我已设法使用以下代码解决该问题:

tweetSheet.completionHandler = ^(SLComposeViewControllerResult result) {
    switch(result) {
            //  This means the user cancelled without sending the Tweet
        case SLComposeViewControllerResultCancelled:
            break;
            //  This means the user hit 'Send'
        case SLComposeViewControllerResultDone:
            [[NSNotificationCenter defaultCenter] postNotificationName:@"kGrowthProvideTwitterBonus" object:nil];
            DLog(@"Sended provide bonus notification");
            [self disableButtonWithTag:TTGrowthButtonTwitterConnectTag];
        break;
    }

    //  dismiss the Tweet Sheet
    dispatch_async(dispatch_get_main_queue(), ^{
        [self dismissViewControllerAnimated:NO completion:^{
            NSLog(@"Tweet Sheet has been dismissed.");
        }]; 
    });
};