有没有办法自定义 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?的主要内容,如果未能解决你的问题,请参考以下文章