Есть ли способ настроить Sharekit? - PullRequest
4 голосов
/ 13 марта 2011

По умолчанию Sharekit использует actionSheet для обмена элементами. Есть ли способ показать только определенные элементы, такие как только Facebook, Twitter и электронная почта, в маленьком UIView, а не в actionSheet?

Edit: Проще говоря:

У меня есть 3 кнопки в моем UIView, одна для Facebook, Twitter и электронной почты. Я не хочу использовать ActionSheet Sharekit. Есть ли какой-нибудь способ позвонить FBConnect, Twitter и электронной почте, по одному, в Sharekit, нажав мои UIButton s?

Ответы [ 3 ]

3 голосов
/ 16 марта 2011

я нашел это здесь:

http://getsharekit.com/docs/#specific-service

3 голосов
/ 13 марта 2011

Да. Это займет немного работы, но это можно сделать следующим образом:

в 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...")];

Причина, по которой мы должны удалить это, состоит в том, что раньше мы удалили кнопку «больше», а теперь мы должны убедиться, что код не перепутает любую другую кнопку с кнопкой «больше». Кнопку more пришлось удалить, потому что она открывала варианты использования других методов обмена, которые мы не хотим использовать пользователем. Если мы не удалим его, пользователь все равно сможет получить доступ к отключенному методу общего доступа.

Надеюсь, это поможет.

1 голос
/ 09 мая 2013

Новый способ сделать это с помощью последней версии 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];
}
...