Я столкнулся с вашей проблемой и нашел решение, возможно, не самое красивое, но оно решает проблему.Существует delagate под названием SHKSharerDelegate, который можно использовать с распространителями для этой цели, поэтому, если вы вызываете распределителей непосредственно из своего кода (без таблицы действий), то вам следует сделать что-то вроде этого:
NSString* mySharerClassName = @"SHKFacebook";
SHKSharer* classItem = (SHKSharer*)[[NSClassFromString(mySharerClassName) alloc] init];
Class sharerClass = [classItem class];
if ( [sharerClass canShare] ){
[classItem performSelector: @selector(setItem:) withObject: item];
//Assuming that the class where this code is conforms to the SHKSharerDelegate protocol
[classItem performSelector: @selector(setShareDelegate:) withObject: self];
[classItem performSelector: @selector(send)];
}
Если вам нужно использовать ActionSheet, он становится немного сложнее, в основном из-за того, что его не поддерживают, просто перейдите в заголовочный файл ActionSheet (ShareKit / UI / SHKActionSheet.h) и добавьте свойство делегата:
@property (nonatomic, retain) id sharerDelegate;
Обратите внимание, что это не id<SHKSharerDelegate>
, попробуйте сделать это, и вы испытаете много боли .Вот почему я сказал, что это не самая красивая.После того как вы добавили и синтезировали свойство, ищите этот метод:
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
И где оно говорит:
id sharer = [sharers objectAtIndex:buttonIndex];
[NSClassFromString(sharer) performSelector:@selector(shareItem:) withObject:item];
Измените его на
id sharer = [sharers objectAtIndex:buttonIndex];
if ( sharerDelegate == nil ){
[NSClassFromString(sharer) performSelector:@selector(shareItem:) withObject:item];
}else{
SHKSharer* classItem = [[NSClassFromString(sharer) alloc] init];
[classItem performSelector: @selector(setItem:) withObject: item];
[classItem performSelector: @selector(setShareDelegate:) withObject: sharerDelegate];
[classItem performSelector: @selector(send)];
}
Если выЯ больше постараюсь сделать пост в блоге и отредактирую ответ, чтобы сослаться на него.Надеюсь, я еще смогу кому-нибудь помочь!