iOS>&燃气轮机;ShareKit>&燃气轮机;选择所需的共享服务
我已经在我的应用程序中实现了ShareKit。我同意默认的工作方式,但我希望控制用户可以选择的服务;更具体地说,我不想在默认情况下处理所有嵌入的服务,只想使用Facebook、Twitter和MailiOS>&燃气轮机;ShareKit>&燃气轮机;选择所需的共享服务,ios,facebook,email,twitter,sharekit,Ios,Facebook,Email,Twitter,Sharekit,我已经在我的应用程序中实现了ShareKit。我同意默认的工作方式,但我希望控制用户可以选择的服务;更具体地说,我不想在默认情况下处理所有嵌入的服务,只想使用Facebook、Twitter和Mail 我在ShareKit文件中的何处进行这些设置(删除所有我不想处理其API等的被忽略的服务) 您需要在ShareKit框架中编辑SHK.m。将favoriteSharersForType:方法更改为仅限: favoriteSharers = [NSArray arrayWithObjects:@"S
我在ShareKit文件中的何处进行这些设置(删除所有我不想处理其API等的被忽略的服务) 您需要在ShareKit框架中编辑
SHK.m
。将favoriteSharersForType:
方法更改为仅限:
favoriteSharers = [NSArray arrayWithObjects:@"SHKFacebook", @"SHKTwitter", nil];
return favoriteSharers;
您可以根据需要从此阵列中添加/删除服务
编辑
要删除更多。。。按钮,在SHKActionSheet.m
中找到actionSheetForType
方法并删除:
[作为添加按钮,标题为:SHKLocalizedString(@“更多…”))代码>
完成此操作后,您需要修复索引。使用ClickedButtonIndex:
委托方法找到Dismiss,如果(buttonIndex==sharers.count)
块,则删除整个。您可以为希望使用的每个Sharekit服务导入头文件。例如,如果您有一个带有UILabel的页面,其中包含一个文本字符串,则可以在实现文件的顶部导入您希望使用的服务
#import "SHKTwitter.h"
#import "SHKFacebook.h"
#import "SHKMail.h"
然后,您可以将其设置为通过这些服务通过您希望的任何操作进行共享,即点击Facebook、Twitter或邮件按钮?或者,您可以手动输入自己的UIActionSheet,其中包含Twitter、Facebook和Mail的三个项目,然后根据请求调用特定的Sharekit服务
例如,如果你想发布一个URL
#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
这是一个简单的解释,但可用于共享图像、文档、文本字符串等。创建自己的配置文件时,请覆盖此方法:
- (NSString*)sharersPlistName
{
return @"MySHKSharers.plist"; // original value is "SHKSharer.plist"
}
将SHKSharer.plist从class/ShareKit/Core下的ShareKit项目复制到您的项目位置
从文件中删除不需要的操作和服务,即可完成。从“DefaultShkConfiguration.h”中创建DefaultShkConfiguration子类,并实现以下方法:
- (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];
在我看来,上述解决方案是错误的,并且不可维护,因为每次更新ShareKit库时,您都必须应用该更改(至少现在,我不知道在以前的ShareKit版本中是如何实现的)
如果您阅读SHK.m,您将看到它首先尝试从首选项中获取共享者(如果您有),否则它将转到SHKConfigurator并调用defaultFavoriteURLSharers
如果您将DefaultShkConfiguration子类化(您可能会这样做),您可以覆盖defaultFavoriteURLSharers方法(或ImageSharers,或TextSharers等),并在那里定义您最喜欢的共享
在@interface CLQShareKitConfigurator中:DefaultShkConfiguration
-(NSNumber*)showActionSheetMoreButton {
return [NSNumber numberWithBool:false];
}
要删除更多按钮,可以在SHKConfigurator中添加此方法
-(NSNumber*)showActionSheetMoreButton {
return [NSNumber numberWithBool:false];
}
埃文,谢谢你的回答-你能告诉我如何删除“更多…”按钮吗?我不想允许选择其他选项。埃文,再次感谢!你就是那个男人!!我只想指出,您提到的两个函数(actionSheetForType和dismissWithClickedButtonIndex)都在SHKAActionSheet文件中,而不是您提到的SHK中;但是方向是完美的-再次感谢@奥哈德·雷格夫:不客气。我在回答中确定了文件的位置。