有没有办法自定义Sharekit?

时间:2011-03-13 13:56:11

标签: iphone ios uiview sharing sharekit

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

修改 换句话说:

我的UIView有3个按钮,一个用于脸书,推特和电子邮件。我不想使用Sharekit的actionSheet。有没有办法通过按下UIButton来在Sharekit中逐个调用FBConnect,Twitter和电子邮件共享?

3 个答案:

答案 0 :(得分: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...")];

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

希望这有帮助。

答案 1 :(得分:3)

答案 2 :(得分: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];
}