Ответ 1
Если вы используете mySLComposerSheet, это отлично работает...
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
[mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
Я в процессе изменения моего приложения для использования в iOS6 и iPhone, я не могу понять, почему, когда я отправляю сообщение в Twitter с помощью новой социальной структуры, я должен дважды нажать "Отменить", чтобы закрыть кого-либо еще есть эта проблема или исправление? Вот код кнопки.
- (IBAction)twitterPost:(id)sender
{
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
mySLComposerSheet = [[SLComposeViewController alloc] init];
mySLComposerSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[mySLComposerSheet setInitialText:[NSString stringWithFormat:@"This is my tweet, hello!",mySLComposerSheet.serviceType]];
[self presentViewController:mySLComposerSheet animated:YES completion:nil];
}
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
NSLog(@"dfsdf");
switch (result) {
case SLComposeViewControllerResultCancelled:
break;
case SLComposeViewControllerResultDone:
break;
default:
break;
}
}];
}
Если вы используете mySLComposerSheet, это отлично работает...
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
[mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
Мой опыт работы с SLComposeViewController заключается в том, что контроллеры twitter и weibo необходимо отменить вручную, в то время как контроллер facebook лучше себя ведет.
Если я не отклоняю элементViewControllerAnimated самостоятельно, нажатие кнопки "Отправить" отправит сообщение в твиттере или вейбо, но я останусь с тем, что кажется невидимым для моего собственного представления. Таким образом, я больше не могу взаимодействовать с моим приложением.
Я не знаю, почему мое приложение работает так... Интересно, что завершениеHandler для отмены вызывается только один раз. Второй ответ отклоняет контроллер вида.
+ (void) shareText:(NSString*)text image:(UIImage*)image social:(NSString*)service url:(NSString*)url
{
SLComposeViewController* controller = [SLComposeViewController composeViewControllerForServiceType:service];
[controller setInitialText:text];
[controller addImage:image];
[controller addURL:[NSURL URLWithString:url]];
controller.completionHandler = ^(SLComposeViewControllerResult result) {
if( SLComposeViewControllerResultDone == result )
{
NSLog(@"rewards for share: %@!", service );
}
if( ![SLServiceTypeFacebook isEqualToString:service] ) // facebook behaves
[[CBLAppDelegate instance].activeViewController dismissViewControllerAnimated:true completion:nil];
};
[[CBLAppDelegate instance].activeViewController presentViewController:controller animated:true completion:nil];
}
Обнаружена проблема. Это происходит только тогда, когда обработчик завершения добавляется в TWTweetComposeViewController. Если вы добавили, обязательно звоните:
[self rejectModalViewControllerAnimated: YES];
Попробуйте этого приятеля
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
switch (result) {
case SLComposeViewControllerResultCancelled:
[self performSelector:@selector(showalert)];
[mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
break;
case SLComposeViewControllerResultDone:
[self performSelector:@selector(showalert1)];
[mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
break;
default:
break;
}
}];
Проводка комментария выше как ответ:
Пробовал ли вы настройку completeHandler перед представлением контроллера просмотра?