7

我没有太多使用 ShareKit,但我只想拥有三个共享选项:Facebook、Twitter 和电子邮件。ShareKit 提供了更多选项,包括更多按钮。但是,我不想要更多选项,只想要三个。

SHKActionSheet.mShareKit 中:

// Add More button
[as addButtonWithTitle:SHKLocalizedString(@"More...")];

在此处输入图像描述

4

6 回答 6

16

如果您使用ShareKit 2.0,现在非常容易。

  1. 编辑 SHKSharers.plist 以仅包含您需要的共享者。如果您不想编译未使用的共享文件,请检查粒度安装

  2. 您可以在配置器中隐藏“更多...”按钮。新设置是 - (NSNumber*)showActionSheetMoreButton

  3. 您可以在配置器中禁用收藏夹重新排序。通常最后使用的共享器位于 ShareKit 操作表的顶部。新设置是 - (NSNumber*)autoOrderFavoriteSharers

使用这种方式,您无需更改或添加任何代码到 ShareKit。

于 2011-11-23T07:34:40.567 回答
4

我想拥有同样的东西。我花了几天时间让 ShareKit 工作,但没有取得太大的成功。好的,我可以发布 FB、Twitter 和电子邮件消息,但更痛苦的是方便。

Sharekit 是一个很棒的主意,但是:

  • 您不能同时分享图片、网址和文字!它必须是纯文本、纯 URL 或纯图像。可能您希望您的用户在 FB 或 Twitter 上发布一些内容或发送有关您的应用程序的电子邮件。如果消息不能包含 App Store 或网页链接,那有什么意义?
  • 非常糟糕的记录通常您必须在 StackoverFlow 上发布问题
  • 它有问题,原始设计者不支持,所以有几十个叉子。您可以选择 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 超级好用,一个小时左右我就学会了如何使用上传文件。

于 2012-03-01T09:01:18.403 回答
3

如果您不想要更多...按钮,为什么不删除添加它的代码行呢?

于 2011-06-16T12:28:46.747 回答
1

您需要从 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 以获得您喜欢的服务。

于 2011-10-28T09:49:29.353 回答
0

您可以使用以下定义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];
}
于 2011-10-19T19:27:32.757 回答
0

优秀的解决方案,但是在我的情况下,例如也想使用 Facebook,并且无法在 iOS5 中本地共享内容。另一个问题是那些需要与iOS4.0或更高版本(我的情况)兼容的应用程序的人不能,因为这种方法只适用于5.0。

如何解决这个问题?ShareKit 使用 Facebook 和 Twitter 作为本机方法而忘记与 iOS4.0 的兼容性?

于 2012-03-04T14:54:21.140 回答