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]];
}

最爱就像:

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

类型为 SHKShareType:

typedef enum 
{
    SHKShareTypeUndefined,
    SHKShareTypeURL,
    SHKShareTypeText,
    SHKShareTypeImage,
    SHKShareTypeFile
} SHKShareType;
于 2010-10-24T13:20:46.313 回答
7

使用最新版本的 ShareKit 2.0 执行此操作的新方法是在您的 SHKConfigurator 中覆盖以下方法(扩展 DefaultSHKConfigurator.m)

// SHKActionSheet settings
- (NSNumber*)showActionSheetMoreButton {
    return [NSNumber numberWithBool:true];// Setting this to true will show More... button in SHKActionSheet, setting to false will leave the button out.
}

/*
 Favorite Sharers
 ----------------
 These values are used to define the default favorite sharers appearing on ShareKit's action sheet.
 */
- (NSArray*)defaultFavoriteURLSharers {
    return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", @"SHKReadItLater", nil];
}
- (NSArray*)defaultFavoriteImageSharers {
    return [NSArray arrayWithObjects:@"SHKMail",@"SHKFacebook", @"SHKCopy", nil];
}
- (NSArray*)defaultFavoriteTextSharers {
    return [NSArray arrayWithObjects:@"SHKMail",@"SHKTwitter",@"SHKFacebook", nil];
}
于 2013-05-09T14:06:22.743 回答
3

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

于 2010-10-24T16:12:45.300 回答
2

请参阅我在另一个线程上的答案,并提供更详尽的解释。

如果您使用ShareKit 2.0,它现在可以轻松配置而无需更改 ShareKit 的代码

基本上,如果你只使用 Facebook 和 Twitter,更容易不要弄乱 ShareKit 的代码。您可以使用两个按钮轻松创建自己的 UIActionSheet,并调用ShareKit 的便捷共享方法。

于 2011-11-23T07:43:54.053 回答
2

要使不需要的服务不会出现在操作表上,您只需从项目中删除相应的共享服务类即可。

转到项目--> 共享者--> 服务--> 选择相应服务的 .h 和 .m 文件并将其删除。

例如,可以通过删除 SHKFacebook.h 和 SHKFacebook.m 来删除 Facebook 选项。

注意:您必须检查类导入以避免错误。

于 2012-04-27T07:02:03.327 回答
0

最简单的方法是编辑“SHKSharers.plist”并保留您需要的服务。

于 2014-08-24T21:32:14.297 回答