Контроллер просмотра 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 совместимым. В результате ваша ошибка