我没有太多使用 ShareKit,但我只想拥有三个共享选项:Facebook、Twitter 和电子邮件。ShareKit 提供了更多选项,包括更多按钮。但是,我不想要更多选项,只想要三个。
在SHKActionSheet.m
ShareKit 中:
// Add More button
[as addButtonWithTitle:SHKLocalizedString(@"More...")];
我没有太多使用 ShareKit,但我只想拥有三个共享选项:Facebook、Twitter 和电子邮件。ShareKit 提供了更多选项,包括更多按钮。但是,我不想要更多选项,只想要三个。
在SHKActionSheet.m
ShareKit 中:
// Add More button
[as addButtonWithTitle:SHKLocalizedString(@"More...")];
如果您使用ShareKit 2.0,现在非常容易。
编辑 SHKSharers.plist 以仅包含您需要的共享者。如果您不想编译未使用的共享文件,请检查粒度安装。
您可以在配置器中隐藏“更多...”按钮。新设置是 - (NSNumber*)showActionSheetMoreButton
您可以在配置器中禁用收藏夹重新排序。通常最后使用的共享器位于 ShareKit 操作表的顶部。新设置是 - (NSNumber*)autoOrderFavoriteSharers
使用这种方式,您无需更改或添加任何代码到 ShareKit。
我想拥有同样的东西。我花了几天时间让 ShareKit 工作,但没有取得太大的成功。好的,我可以发布 FB、Twitter 和电子邮件消息,但更痛苦的是方便。
Sharekit 是一个很棒的主意,但是:
添加推特需要5行,Facebook和电子邮件大约需要50行,同时支持文本、URL和照片。
Twitter:此代码发送带有用户可编辑文本、URL(隐藏,不可编辑)和图像的消息。我花了 5 分钟才弄明白。
#import <Twitter/TWTweetComposeViewController.h>
- (IBAction)twitterButton:(id) sender {
TWTweetComposeViewController *tweetView = [[TWTweetComposeViewController alloc] init];
[tweetView setInitialText:@"Check out this app, it's awesome" ];
[tweetView addImage:[UIImage imageNamed:@"MyImage.png"]];
[tweetView addURL:[NSURL URLWithString:appDelegate.appStoreURL]];
[self presentModalViewController:tweetView animated:YES];
}
我非常感谢创建 Sharkit 的努力,但我个人不推荐它,除非你真的需要支持所有这些共享者并且你对有限的功能感到满意。
更新:我自己实现了 Facebook 分享。这比我想象的要困难。主要问题是您不能上传带有帖子的照片,因为 Facebook 只接受图片链接。更糟糕的是,Facebook 不允许链接到上传到用户相册的照片(非常简单),因为它必须是外部链接。对于静态图像,您可以使用 URL 缩短器来绕过它,但对于用户生成的图像,您几乎必须使用 Amazon S3 或其他东西。Amazon S3 超级好用,一个小时左右我就学会了如何使用上传文件。
如果您不想要更多...按钮,为什么不删除添加它的代码行呢?
您需要从 SHKActionSheet.m 更改此代码
+ (SHKActionSheet *)actionSheetForType:(SHKShareType)type
// Add More button
//[as addButtonWithTitle:SHKLocalizedString(@"More...")];
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
// More
// else if (buttonIndex == sharers.count)
// {
// SHKShareMenu *shareMenu = [[SHKCustomShareMenu alloc]
// initWithStyle:UITableViewStyleGrouped];
// shareMenu.item = item;
// [[SHK currentHelper] showViewController:shareMenu];
// [shareMenu release];
// }
您可以编辑 SHKSharers.plist 以获得您喜欢的服务。
您可以使用以下定义dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
您需要删除以下定义中注释的几行。
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
{
// Sharers
if (buttonIndex >= 0 && buttonIndex < sharers.count)
{
[NSClassFromString([sharers objectAtIndex:buttonIndex]) performSelector:@selector(shareItem:) withObject:item];
}
// More
//else if (buttonIndex == sharers.count)
// {
// SHKShareMenu *shareMenu = [[SHKCustomShareMenu alloc] initWithStyle:UITableViewStyleGrouped];
// shareMenu.item = item;
// [[SHK currentHelper] showViewController:shareMenu];
// [shareMenu release];
// }
[super dismissWithClickedButtonIndex:buttonIndex animated:animated];
}
优秀的解决方案,但是在我的情况下,例如也想使用 Facebook,并且无法在 iOS5 中本地共享内容。另一个问题是那些需要与iOS4.0或更高版本(我的情况)兼容的应用程序的人不能,因为这种方法只适用于5.0。
如何解决这个问题?ShareKit 使用 Facebook 和 Twitter 作为本机方法而忘记与 iOS4.0 的兼容性?