iOS>&燃气轮机;ShareKit>&燃气轮机;选择所需的共享服务

iOS>&燃气轮机;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。我同意默认的工作方式,但我希望控制用户可以选择的服务;更具体地说,我不想在默认情况下处理所有嵌入的服务,只想使用Facebook、Twitter和Mail


我在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中;但是方向是完美的-再次感谢@奥哈德·雷格夫:不客气。我在回答中确定了文件的位置。