我在我的应用中实现了ShareKit。我可以使用它的默认方式,但我希望控制可供用户选择的服务;更具体地说,我不想处理默认嵌入的所有服务,只需要Facebook,Twitter和Mail。
在ShareKit文件中我在哪里进行这些设置(删除所有这些被忽略的服务,我不想处理它们的API等)?
答案 0 :(得分:7)
您需要在ShareKit框架中编辑SHK.m
。仅将favoriteSharersForType:
方法更改为:
favoriteSharers = [NSArray arrayWithObjects:@"SHKFacebook", @"SHKTwitter", nil];
return favoriteSharers;
您可以根据需要在此阵列中添加/删除服务。
修改强>
要删除更多...按钮,请在actionSheetForType
中找到SHKActionSheet.m
方法并删除:
[as addButtonWithTitle:SHKLocalizedString(@"More...")];
完成此操作后,您需要修复索引。找到dismissWithClickedButtonIndex:
委托方法并删除整个else if (buttonIndex == sharers.count)
块。
答案 1 :(得分:1)
您可以导入要使用的每个Sharekit服务的头文件。例如,如果您的页面上有一个UILabel,其中包含一个文本字符串,您可以在实现文件的顶部导入您希望使用的服务。
#import "SHKTwitter.h"
#import "SHKFacebook.h"
#import "SHKMail.h"
然后,您可以通过您希望的任何操作,即点击Facebook,Twitter或邮件按钮,将其设置为通过这些服务进行分享?或者您可以手动输入您自己的UIActionSheet,其中有三个项目用于Twitter,Facebook和Mail,然后根据请求调用特定的Sharekit服务。
如果您想发布网址,例如
#import "SHKTwitter.h" //include the service's header at the top of your class
...
// Create the item to share (in this example, a url)
NSURL *url = [NSURL URLWithString:@"http://iPhoneHelpr.com"];
SHKItem *item = [SHKItem URL:url title:@"Check out my site!"];
// Share the item
[SHKTwitter shareItem:item]; // Specify the specific service you want to share with
这是一个简单的解释,但它可以应用于共享图像,文档,文本字符串等。
答案 2 :(得分:1)
创建自己的配置文件时,请覆盖此方法:
- (NSString*)sharersPlistName
{
return @"MySHKSharers.plist"; // original value is "SHKSharer.plist"
}
将SHKSharer.plist从Classes / ShareKit / Core下的ShareKit项目复制到您的项目位置。
从文件中删除不需要的操作和服务,您已完成。
答案 3 :(得分:1)
来自“DefaultSHKConfigurator.h”的子类DefaultSHKConfigurator并实现以下方法:
- (NSArray*)defaultFavoriteURLSharers {
return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", @"SHKPocket", nil];
}
- (NSArray*)defaultFavoriteImageSharers {
return [NSArray arrayWithObjects:@"SHKMail",@"SHKFacebook", @"SHKCopy", nil];
}
- (NSArray*)defaultFavoriteTextSharers {
return [NSArray arrayWithObjects:@"SHKMail",@"SHKTwitter",@"SHKFacebook", nil];
}
在你的stdAppDelegate中:
//configure sharekit:
DefaultSHKConfigurator *configurator = [[MySHKConfigurator alloc] init];
[SHKConfiguration sharedInstanceWithConfigurator:configurator];
答案 4 :(得分:0)
上述解决方案在我看来是错误的,并且无法维护,因为每次有关ShareKit库的更新时都必须应用该更改(至少现在,我不知道它在之前版本的ShareKit中是怎么回事)。
如果您阅读 SHK.m ,您会看到它首先尝试从偏好设置中获取您的分享者,如果您有,则会转到SHKConfigurator并且致电 defaultFavoriteURLSharers 。
如果您继承 DefaultSHKConfigurator (您可能会这样做),则可以覆盖 defaultFavoriteURLSharers 方法(或ImageSharers,或TextSharers等),你可以在那里定义你最喜欢的分享者。
在@interface CLQShareKitConfigurator:DefaultSHKConfigurator
- (NSArray*)defaultFavoriteURLSharers
{
return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", nil];
}
答案 5 :(得分:0)
要删除更多按钮,可以在SHKConfigurator
中添加此方法-(NSNumber*)showActionSheetMoreButton {
return [NSNumber numberWithBool:false];
}