Контроллер просмотра ShareKit не уйдет

Я использую ShareKit 0.2.1 на Xcode 4.2 (iOS SDK 5) для совместного использования текста в Twitter. Он делится штрафом, но контроллер модального просмотра не исчезнет после успешного совместного использования после нажатия кнопки отмены (см. Ниже):

enter image description here

И это мой код:

-(IBAction)shareOnTwitter:(id)sender{


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

    [SHKTwitter shareText:text];

}

Что я делаю неправильно?

Ответы

Ответ 1

У меня такая же проблема, как и у вас. Это проблема iOS 5. Это потому, что ShareKit использует метод UIViewController, называемый parentViewController, и согласно документам Apple вы больше не можете использовать это в iOS 5. Вместо этого вы должны использовать presentingViewController.

Итак, чтобы исправить это в коде ShareKit, зайдите в SHK.m, найдите метод с подписью (void)hideCurrentViewControllerAnimated:(BOOL)animated и замените его на:

- (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;
    }
}

Это работает для меня на iOS 5.

Ответ 2

if (isDismissingView)
    return;

if (currentView != nil)
{
    // Dismiss the modal view
    if ([currentView parentViewController] != nil)
    {
        self.isDismissingView = YES;
        [[currentView parentViewController] dismissModalViewControllerAnimated:animated];
    }

    else {
        //## ADD BELOW ##
        self.isDismissingView = YES;
        [currentView dismissModalViewControllerAnimated:animated];
        self.currentView = nil;

    }
}
else {
    [[self getTopViewController].navigationController popViewControllerAnimated:YES];
}

Ответ 3

Это код, который я использую в одном из моих приложений. Это прекращается.

NSURL *url = [NSURL URLWithString:@"http://itunes.apple.com/us/app/packager/id459511278?l=nl&ls=1&mt=8"];
NSString *twittertext = [[NSString alloc] initWithFormat: @"Tweet Text"];
SHKItem *item = [SHKItem URL:url twittertext];

// Share the item
[SHKTwitter shareItem:item];
[twittertext release]; 

Ответ 4

Я использовал следующий код в своем приложении (отключен ARC)

NSString *text = @"Go away, modal view controller!";

[SHKTwitter shareText:text];

Я могу подтвердить, что он отклоняет штраф. Вероятно, вы изменили код в SHKTwitterForm.m при попытке сделать ShareKit ARC совместимым. В результате ваша ошибка