ver.2 の公式 FAQによると、ユーザーが選択した共有者に応じてテキスト/コンテンツをカスタマイズするには、次のものが必要です。
- SHKActionSheet からサブクラス化し、dismissWithClickedButtonIndex をオーバーライドします
- コンフィギュレーターで新しいサブクラス名を設定します ((Class)SHKActionSheetSubclass; で返します)。
それは私にはうまくいきません。しかし、さらに:私は入れます
NSLog(@"%@", NSStringFromSelector(_cmd));
(Class)SHKActionSheetSubclass で、それが呼び出されたかどうかを確認します。そして、そうではありません ;(( したがって、ShareKit はこの構成オプションを気にしません... 誰かがこれを以前に使用したことがありますか?
ありがとう!
UPD1: ここにいくつかのコードを入れました。
サブクラス ITPShareKitActionSheet は次のようになります。ドキュメントによると、オーバーライドする必要がありますdismissWithClickedButtonIndex:animated:
が、クラスが呼び出されたかどうかを追跡するために、次のもオーバーライドしますactionSheetForItem:
。
+ (ITPShareKitActionSheet *)actionSheetForItem:(SHKItem *)item
{
NSLog(@"%@", NSStringFromSelector(_cmd));
ITPShareKitActionSheet *as = (ITPShareKitActionSheet *)[super actionSheetForItem:item];
return as;
}
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animate
{
NSLog(@"%@", NSStringFromSelector(_cmd));
NSString *sharersName = [self buttonTitleAtIndex:buttonIndex];
[self changeItemForService:sharersName];
[super dismissWithClickedButtonIndex:buttonIndex animated:animate];
}
そして、ユーザーが「共有」ボタンを押したときにアクションシートを作成するためにコードで行うことは次のとおりです。
- (IBAction)shareButtonPressed:(id)sender
{
// Create the item to share
SHKItem *item = [SHKItem text:@"test share text"];
// Get the ShareKit action sheet
ITPShareKitActionSheet *actionSheet = [ITPShareKitActionSheet actionSheetForItem:item];
// Display the action sheet
[actionSheet showInView:self.view]; // showFromToolbar:self.navigationController.toolbar];
}
このコードを実行したら、[共有] ボタンを押して、ログに 2 行が記録されると予想される共有者を選択します。
actionSheetForItem:
- カスタム アクション シートが作成されましたdismissWithClickedButtonIndex:animated:
- アクション シートの押されたボタンを処理するためのカスタム メカニズムが呼び出されました。
しかし、何らかの理由で、ログに記録されるのは最初の行だけです。