我使用ShareKit(www.getsharekit.com)将我的URL分享给Twitter和Facebook。我希望能够删除它指向的所有其他社交网络,但不知道在哪里编辑?如何自定义ShareKit操作单?
回答
从ShareKit /核心/ 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]];
}
的收藏是这样的:
[NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil]
类型是SHKShareType:
typedef enum
{
SHKShareTypeUndefined,
SHKShareTypeURL,
SHKShareTypeText,
SHKShareTypeImage,
SHKShareTypeFile
} SHKShareType;
在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”,以阵列)
这将消除其他opti但是显示选项的操作表不会反映更改,它仍然会提供更多选项,我们还需要禁用该选项。
因此,要做到这一点去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
并删除以下else if语句可
// More
else if (buttonIndex == sharers.count)
{
SHKShareMenu *shareMenu = [[SHKCustomShareMenu alloc] initWithStyle:UITableViewStyleGrouped];
shareMenu.item = item;
[[SHK currentHelper] showViewController:shareMenu];
[shareMenu release];
}
这种方法是悬而未决的是采取按钮通常是更多的按钮,并打开更多的选项。因此,通过删除代码与取消按钮没有关联的操作,因此它只是关闭并释放操作表,有效地创建取消按钮。
希望我可以给你10个upvotes这样一个彻底的解释。这正是我需要的 - 谢谢! – 2011-01-19 05:54:11
多好的回答。我在一段时间内看到的最好的东西......以及像我这样的低代表的人! – 2011-07-25 22:10:28
高超的解释..加上10个投票 – Hadi 2011-07-28 07:35:23
请参阅my answer在其他线程上进行更全面的说明。
现在是在不改变ShareKit的代码很容易配置,如果使用ShareKit 2.0
基本上,如果你只使用Facebook和Twitter,很容易不惹ShareKit的代码。您可以轻松地使用两个按钮创建您自己的UIActionSheet,并调用ShareKit's convenience share方法。
想知道为什么投票? “与ShareKit的代码混乱”我的意思是自定义ShareKit的代码在你的应用程序(隐藏更多按钮),当它不是必要的。如果您想升级到较新版本的ShareKit,这将为您赢得额外的工作。您可以使用ShareKit的共享器便捷方法直接使用经典的标准UIActionSheet实现相同的功能。 – 2011-12-02 13:28:18
对于不需要的服务不会出现在操作表上,您可以简单地从项目中删除相应的共享服务类。
转到项目 - >共享程序 - >服务 - >选择相应服务的.h和.m文件并将其删除。
例如,可以通过删除SHKFacebook.h和SHKFacebook.m来删除Facebook选项。
注意:您必须检查课程导入以避免错误。
新的方式与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];
}
最简单的方法是编辑“SHKSharers.plist”,并保持您需要的服务。
- 1. 表单操作 - 自定义网址
- 2. 1Password样式自定义操作菜单
- 3. 自定义Google表单发帖操作
- 4. 如何重用Wix自定义操作?
- 5. 如何创建自定义操作
- 6. 如何编写自定义流式自定义操作器
- 7. Sharepoint自定义操作删除网站操作菜单项
- 8. 如何自定义操作栏操作项?
- 9. 如何自定义窗口菜单(Linux操作系统Ubuntu)
- 10. 有没有办法自定义Sharekit?
- 11. Objective-C - ShareKit自定义Twitter导航栏
- 12. 在Selenium中定义自定义操作
- 13. 在自定义类上定义操作
- 14. Rails自定义操作
- 15. 自定义操作失败
- 16. AWS Cloudwatch自定义操作
- 17. WIX C++自定义操作
- 18. MSI MessageBox自定义操作
- 19. 自定义操作项ActionBarSherlock
- 20. 卸载自定义操作
- 21. 自定义安装操作
- 22. 自定义操作栏sherlock
- 23. SourceTree自定义操作。 $ SHA
- 24. 自定义语音操作
- 25. 自定义操作和组
- 26. Rails:model_url自定义操作
- 27. MSP和自定义操作
- 28. 如何在YAML中定义自定义POST操作?
- 29. 如何最好地在WiX中定义自定义操作?
- 30. 如何制作自定义单元格?
...指向此页。 – 2011-07-25 21:56:11