Контроллер модального представления ShareKit не исчезнет

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

введите здесь описание изображения

И это мой код:

-(IBAction)shareOnTwitter:(id)sender{


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

    [SHKTwitter shareText:text];

}

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


person cfischer    schedule 30.10.2011    source источник


Ответы (3)


У меня та же проблема, что и у вас. Это проблема 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.

person Mike A.    schedule 31.10.2011
comment
Это решение, которое я также реализовал - person Mark Struzinski; 04.11.2011
comment
y это меняет ориентацию устройства - person WaaleedKhan; 11.04.2012

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

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]; 
person Louis    schedule 30.10.2011
comment
Если вы сделаете [NSString stringWithFormat:@Tweet Text]; и удалите [выпуск twittertext]; линия, он все еще отклоняет? По-видимому, единственная разница в том, что я использую ARC... - person cfischer; 30.10.2011

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

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

[SHKTwitter shareText:text];

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

person Louis    schedule 30.10.2011
comment
Нет, я просто скомпилировал все файлы ShareKit без ARC: -fno-objc-arc - person cfischer; 30.10.2011
comment
Я только что перечитал ваш первоначальный вопрос и нашел некоторую путаницу: как вы используете Xcode 4.3? Кроме того, в какой версии симулятора вы столкнулись с ошибкой? Вы тестировали его на реальном устройстве? - person Louis; 30.10.2011