我正在使用ShareKit(www.getsharekit.com)将我的网址分享到Twitter和Facebook。我希望能够删除它指向的所有其他社交网络,但我不确定在哪里编辑?
答案 0 :(得分:49)
找到了这个方法
+ (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
并删除以下if语句
// More
else if (buttonIndex == sharers.count)
{
SHKShareMenu *shareMenu = [[SHKCustomShareMenu alloc] initWithStyle:UITableViewStyleGrouped];
shareMenu.item = item;
[[SHK currentHelper] showViewController:shareMenu];
[shareMenu release];
}
这个方法的目的是获取通常更多按钮的按钮并打开更多选项。因此,通过删除它,代码与取消按钮没有相关的操作,因此它只是关闭并释放操作表,有效地创建取消按钮
答案 1 :(得分: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]];
}
favs就像:
[NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil]
type是SHKShareType:
typedef enum
{
SHKShareTypeUndefined,
SHKShareTypeURL,
SHKShareTypeText,
SHKShareTypeImage,
SHKShareTypeFile
} SHKShareType;
答案 2 :(得分: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];
}
答案 3 :(得分:3)
答案 4 :(得分:2)
请参阅另一个主题中的my answer,并提供更详尽的解释。
如果您使用ShareKit 2.0
,现在可以轻松配置而无需更改ShareKit的代码 基本上,如果你只使用Facebook和Twitter,那么不要轻易搞乱ShareKit的代码。你很容易
使用两个按钮创建自己的UIActionSheet,并调用ShareKit's convenience share方法。
答案 5 :(得分:2)
对于不在活动表上显示的不需要的服务,您只需从项目中删除相应的共享服务类。
转到项目 - >分享者 - >服务 - >选择相应服务的.h和.m文件并将其删除。
例如,删除SHKFacebook.h和SHKFacebook.m即可删除Facebook选项。
注意:您必须检查类导入以避免错误。
答案 6 :(得分:0)
最简单的方法是编辑" SHKSharers.plist"并保留您需要的服务。