14

ShareKit (www.getsharekit.com) を使用して、URL を Twitter や Facebook に共有しています。それが指す追加のソーシャル ネットワークをすべて削除できるようにしたいのですが、どこを編集すればよいかわかりません。

4

7 に答える 7

49

SHK.mでこのメソッドを見つけます

+ (NSArray *)favoriteSharersForType:(SHKShareType)type

変更する

switch (type) 
    {
        case SHKShareTypeURL:
            favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
            break;

        case SHKShareTypeImage:
            favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
            break;

        case SHKShareTypeText:
            favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
            break;

        case SHKShareTypeFile:
            favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
            break;

switch ステートメントの各インスタンスについて、次のようにします。

favoriteSharers = [NSArray arrayWithObjects:@"SHKFacebook", nil];

または、サポートしたいその他のオプション (つまり、twitter と facebook のみが必要な場合は、配列に @"SHKTwitter" を追加します)

これにより、他のオプションが削除されますが、オプションを表示するアクション シートには変更が反映されず、さらに多くのオプションが表示されるため、これも無効にする必要があります。

そのためには、SHKActionSheet.m に移動します。

この方法では、タイトルを「共有」からより具体的なものに変更できます (この部分はオプションです)、つまり「Facebook と Twitter で共有」

+ (SHKActionSheet *)actionSheetForType:(SHKShareType)type

変化する

SHKActionSheet *as = [[SHKActionSheet alloc] initWithTitle:SHKLocalizedString(@"PUT YOUR NEW TITLE HERE")
                                                  delegate:self
                                         cancelButtonTitle:nil
                                    destructiveButtonTitle:nil
                                         otherButtonTitles:nil];
as.item = [[[SHKItem alloc] init] autorelease];
as.item.shareType = type;

同じ方法よりも、この行を削除してください

    // Add More button
[as addButtonWithTitle:SHKLocalizedString(@"More...")];

これにより、[その他] ボタンが削除されますが、コードが [その他] ボタンと [キャンセル] ボタンを混同するようになりました。これを修正するには、次のメソッドに移動します。

- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated

次のelse ifステートメントを削除します

// More
else if (buttonIndex == sharers.count)
{
    SHKShareMenu *shareMenu = [[SHKCustomShareMenu alloc] initWithStyle:UITableViewStyleGrouped];
    shareMenu.item = item;
    [[SHK currentHelper] showViewController:shareMenu];
    [shareMenu release];
}

このメソッドの目的は、通常はその他のボタンであるボタンを取得して、その他のオプションを開くことです。したがって、それを削除すると、コードにはキャンセル ボタンに関連付けられたアクションがないため、アクション シートを閉じて解放するだけで、効果的にキャンセル ボタンが作成されます。

于 2010-12-19T17:03:19.423 に答える
14

ShareKit / Core / SHK.mから:

[SHK setFavorites: (NSArray *)favs forType:(SHKShareType)type]

+ (void)setFavorites:(NSArray *)favs forType:(SHKShareType)type
{
    [[NSUserDefaults standardUserDefaults] setObject:favs forKey:[NSString stringWithFormat:@"%@%i", SHK_FAVS_PREFIX_KEY, type]];
}

favsは次のようなものです:

[NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil]

タイプはSHKShareTypeです。

typedef enum 
{
    SHKShareTypeUndefined,
    SHKShareTypeURL,
    SHKShareTypeText,
    SHKShareTypeImage,
    SHKShareTypeFile
} SHKShareType;
于 2010-10-24T13:20:46.313 に答える
3

参照: http://github.com/ideashower/ShareKit/issues/closed#issue/30

于 2010-10-24T16:12:45.300 に答える
2

不要なサービスがアクションシートに表示されないようにするには、プロジェクトからそれぞれの共有サービスクラスを削除するだけです。

[プロジェクト]->[共有者]->[サービス]->に移動し、それぞれのサービスの.hファイルと.mファイルを選択して削除します。

たとえば、Facebookオプションは、SHKFacebook.hとSHKFacebook.mを削除することで削除できます。

注:エラーを回避するには、クラスのインポートを確認する必要があります。

于 2012-04-27T07:02:03.327 に答える
2

より完全な説明とともに、他のスレッドで私の回答を参照してください。

ShareKit 2.0を使用すると、ShareKit のコードを変更することなく簡単に設定できるようになりました。

基本的に、Facebook と Twitter だけを使用している場合は、ShareKit のコードをいじらない方が簡単です。2 つのボタンを持つ独自の UIActionSheet を簡単に作成し、ShareKit の便利な共有メソッドを呼び出すことができます。

于 2011-11-23T07:43:54.053 に答える
0

最も簡単な方法は、「SHKSharers.plist」を編集して、必要なサービスを維持することです。

于 2014-08-24T21:32:14.297 に答える