Search code examples
objective-ccocoa-touchuiviewcontrollermodalviewcontrollersharekit

ShareKit modal view controller won't go away


I'm using ShareKit 0.2.1 on Xcode 4.2 (iOS SDK 5) to share text on Twitter. It shares fine, but the modal view controller wont go away after successfully sharing on after clicking on the cancel button (see below):

enter image description here

And this is my code:

-(IBAction)shareOnTwitter:(id)sender{


    // Item to share
    NSString *text = @"Go away, modal view controller!";

    [SHKTwitter shareText:text];

}

What am I doing wrong?


Solution

  • It is an iOS 5 issue. It's because ShareKit is using a method on UIViewController called parentViewController and according to the Apple docs you can no longer use this in iOS 5. Instead, you must use presentingViewController.

    So to fix it in the ShareKit code, go into SHK.m, find the method with signature (void)hideCurrentViewControllerAnimated:(BOOL)animated, and replace it with:

    - (void)hideCurrentViewControllerAnimated:(BOOL)animated
    {
        if (isDismissingView)
            return;
    
        if (currentView != nil)
        {
            // Dismiss the modal view
            if ([currentView parentViewController] != nil)
            {
                self.isDismissingView = YES;
                [[currentView parentViewController] dismissModalViewControllerAnimated:animated];
            } else if ([currentView presentingViewController] != nil) {
                self.isDismissingView = YES;
                [[currentView presentingViewController] dismissModalViewControllerAnimated:animated];
        } else
            self.currentView = nil;
        }
    }
    

    This works for me on iOS 5.