【问题标题】:Is There Any Way To Customize Sharekit?有没有办法自定义 Sharekit?
【发布时间】:2011-03-13 13:56:11
【问题描述】:

默认情况下,Sharekit 使用 actionSheet 来共享项目。 有没有办法在一个小的 UIView 中而不是在 actionSheet 中仅显示特定项目,例如仅 facebook、twitter 和电子邮件?

编辑: 换一种说法:

我的UIView 中有 3 个按钮,一个用于 facebook、twitter 和电子邮件。我不想使用 Sharekit 的 actionSheet。有什么方法可以在 Sharekit 中按我的UIButton's 一一调用 FBConnect、Twitter 和电子邮件共享?

【问题讨论】:

    标签: iphone ios uiview sharing sharekit


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      是的。这需要一些工作,但可以按如下方式完成:

      SHK.m找到这个方法

      + (NSArray *)favoriteSharersForType:(SHKShareType)type
      

      改变

      switch (type) 
      {
          case SHKShareTypeURL:
              favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
              break;
      
          case SHKShareTypeImage:
              favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
              break;
      
          case SHKShareTypeText:
              favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
              break;
      
          case SHKShareTypeFile:
              favoriteSharers = [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil];
              break;
      

      对于switch语句的每个实例如下

      favoriteSharers = [NSArray arrayWithObjects:@"SHKFacebook", nil];
      

      或者您想要支持的任何其他选项(即,如果您只想要 twitter 和 facebook 将 @"SHKTwitter",添加到数组中)

      这将消除其他选项,但显示选项的操作表不会反映更改,它仍会提供更多选项,我们还需要禁用它。

      所以要这样做去SHKActionSheet.m

      在此方法中,您可以选择将标题从“共享”更改为更具体的内容,即。 “与 Facebook 和 Twitter 分享”。为此,请转到以下方法并进行指示的更改。

      + (SHKActionSheet *)actionSheetForType:(SHKShareType)type
      

      改变

      SHKActionSheet *as = [[SHKActionSheet alloc] initWithTitle:SHKLocalizedString(@"PUT YOUR NEW TITLE HERE")
                                                    delegate:self
                                           cancelButtonTitle:nil
                                      destructiveButtonTitle:nil
                                           otherButtonTitles:nil];
      as.item = [[SHKItem alloc] init];
      as.item.shareType = type;
      

      然后用同样的方法,删除这一行:

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

      之所以必须删除它,是因为之前我们删除了更多按钮,现在我们必须确保代码不会将任何其他按钮与更多按钮混淆。必须删除更多按钮,因为它显示了使用我们不希望用户使用的其他共享方法的选项。如果我们不删除它,用户仍然可以访问禁用的共享方法。

      希望这会有所帮助。

      【讨论】:

      • 感谢您的回复,但我已经做到了。你误解我了。我不想在 UIActionSheet 中显示我的共享者(面孔、推特、电子邮件)。我想在我的 smallView 中显示它。我为面部、推特和电子邮件设置了 3 个按钮。我希望我现在清楚了。
      • 哦,对不起。我误解了。我不确定是否可以帮助您解决您的要求,但如果我弄清楚了,我会编辑我的答案。
      • 我想通了。你想让我再发一个回复还是你想通了
      【解决方案3】:

      使用最新版本的 ShareKit 2.0 执行此操作的新方法是覆盖 SHKConfigurator 中的以下方法(扩展 DefaultSHKConfigurator.m)

      // SHKActionSheet settings
      - (NSNumber*)showActionSheetMoreButton {
          return [NSNumber numberWithBool:true];// Setting this to true will show More... button in SHKActionSheet, setting to false will leave the button out.
      }
      
      /*
       Favorite Sharers
       ----------------
       These values are used to define the default favorite sharers appearing on ShareKit's action sheet.
       */
      - (NSArray*)defaultFavoriteURLSharers {
          return [NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook", @"SHKReadItLater", nil];
      }
      - (NSArray*)defaultFavoriteImageSharers {
          return [NSArray arrayWithObjects:@"SHKMail",@"SHKFacebook", @"SHKCopy", nil];
      }
      - (NSArray*)defaultFavoriteTextSharers {
          return [NSArray arrayWithObjects:@"SHKMail",@"SHKTwitter",@"SHKFacebook", nil];
      }
      

      【讨论】:

        猜你喜欢
        • 2019-11-28
        • 1970-01-01
        • 2020-12-27
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 2021-07-26
        • 2016-09-13
        • 2021-11-24
        相关资源
        最近更新 更多