4

默认情况下,Sharekit 使用 actionSheet 来共享项目。UIView有没有办法只在一个小的而不是在 actionSheet中显示特定项目,例如只显示 facebook、twitter 和电子邮件?

编辑: 换一种方式:

我有 3 个按钮UIView,一个用于 facebook、twitter 和电子邮件。我不想使用 Sharekit 的 actionSheet。有什么方法可以在 Sharekit 中通过按 my 来一一调用 FBConnect、Twitter 和电子邮件共享UIButton

4

3 回答 3

3

是的。这将需要一些工作,但可以按如下方式完成:

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];
as.item.shareType = type;

然后用同样的方法,删除这一行:

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

我们必须删除它的原因是因为之前我们删除了更多按钮,现在我们必须确保代码不会将任何其他按钮与更多按钮混淆。必须删除更多按钮,因为它显示了使用我们不希望用户使用的其他共享方法的选项。如果我们不删除它,用户仍然可以访问禁用的共享方法。

希望这可以帮助。

于 2011-03-13T14:59:09.920 回答
3

我在这里找到了它:

http://getsharekit.com/docs/#specific-service

于 2011-03-16T08:57:42.193 回答
1

使用最新版本的 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:05:53.977 回答