3

バージョン5以降のiOSアプリでShareKit2を使用しています。Facebookを正しく使用するようにアプリを構成しました。アクションシートがアクティブ化されると、それが表示される唯一のオプションです。内蔵のTwitter共有システムを使いたいのですが、アクションシートにオプションが表示されません。これが私のコードです:

SURL *url = [NSURL URLWithString:launchUrl];
SHKItem *item = [SHKItem URL:url title:@"Title" contentType:SHKShareTypeURL];

SHKActionSheet *actionSheet = [SHKActionSheet actionSheetForItem:item];

[SHK setRootViewController:self.view.window.rootViewController];

[actionSheet showInView:self.view.window.rootViewController.view];

指示に従って。カスタムDefaultSHKConfiguratorクラスがあります。このクラスでは、これらが関連するメソッドであると思います。

- (NSString*)sharersPlistName {
   return @"MySHKSharers.plist";
}

- (NSArray*)defaultFavoriteURLSharers {
   return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", @"SHKMail",  @"SHKTextMessage", nil];
}

繰り返しになりますが、Facebookだけがオプションとして登場します。完全を期すために、ここに私の「MySHKSharers.plist」ファイル(関連部分)があります:

<dict>
<key>actions</key>
<array>
    <string>SHKMail</string>
    <string>SHKTextMessage</string>
</array>
<key>services</key>
<array>
    <string>SHKTwitter</string>
    <string>SHKFacebook</string>
</array>
</dict>

では、Twitter、Mail、TextMessageをアクションシートに表示できない理由はありますか?

4

2 に答える 2

4

アクションシートに表示されている共有者を構成する場合は、次の投稿が役に立ちました: https://gist.github.com/1181552

アクション (電子メール、テキスト メッセージなど) をデフォルトのアクションシートに表示するのに問題が発生しました。私の解決策は、カスタム アクションシートを作成してから、次のように Sharekit を呼び出すことでした。

- (IBAction) getSharingSheet:(id)sender{
    UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:@"Share"
                                                    delegate:self
                                                    cancelButtonTitle:@"Cancel"
                                                    destructiveButtonTitle:nil
                                                    otherButtonTitles:@"Facebook", @"Twitter", @"Save to Photo Library", @"Email", nil];
    [sheet showInView:self.view];
}

そして、私の didDismissWithButtonIndex:

- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    switch(buttonIndex)
    {
        case 0:
            SHKItem *item = //some item
            [SHKFacebook shareItem:item];
            break;
        case 1:
            SHKItem *item = //some item
            [SHKTwitter shareItem:item];
            break;
        case 2:
            SHKItem *item = //some item
            [SHKPhotoAlbum shareItem:item];
            break;
        case 3:
            SHKItem *item = //some item
            [SHKMail shareItem:item];
            break;
        default:
            break;
    }
}

お役に立てれば!

于 2012-09-27T15:48:15.983 に答える
1

私はこの同じ問題を抱えていて、それを解決しました。これは、直面している問題と同じである場合とそうでない場合があります。

アクション シートがどのように作成されているかを少し調べてみたところ、SHK.m では、保存されているお気に入りが NSUserDefaults から取り出されていることがわかりました。

+ (NSArray *)favoriteSharersForType:(SHKShareType)type
{
    NSArray *favoriteSharers = [[NSUserDefaults standardUserDefaults] objectForKey:[NSString stringWithFormat:@"%@%i", SHKCONFIG(favsPrefixKey), type]];
   ....
}

これらの保存された結果は、「デフォルト」のお気に入りの共有サービスとして定義したものよりも優先されます。これらのお気に入りをクリアすると、問題が解決します。

于 2013-07-25T20:38:46.603 に答える