有没有办法自定义 Sharekit?

Posted

技术标签:

【中文标题】有没有办法自定义 Sharekit?【英文标题】:Is There Any Way To Customize Sharekit? 【发布时间】:2011-03-13 13:56:11 【问题描述】:

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

编辑: 换一种说法:

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

【问题讨论】:

【参考方案1】:

我在这里找到的:

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

【讨论】:

【参考方案2】:

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

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...")];

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

希望这会有所帮助。

【讨论】:

感谢您的回复,但我已经做到了。你误解我了。我不想在 UIActionSheet 中显示我的共享者(面孔、推特、电子邮件)。我想在我的 smallView 中显示它。我为面部、推特和电子邮件设置了 3 个按钮。我希望我现在清楚了。 哦,对不起。我误解了。我不确定是否可以帮助您解决您的要求,但如果我弄清楚了,我会编辑我的答案。 我想通了。你想让我再发一个回复还是你想通了【参考方案3】:

使用最新版本的 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];

【讨论】:

以上是关于有没有办法自定义 Sharekit?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法可以自定义Switch颜色

有没有办法在 MUI 中创建“真正的”自定义组件?

有没有办法为其他租户创建自定义连接器?

有没有办法在 PrimeReact 树中使用自定义图标?

有没有办法通过自定义事件传递额外的数据?

有没有办法用 Espresso 测试 Chrome 自定义标签?