Estoy usando ShareKit (www.getsharekit.com) para compartir mis URL a Twitter y Facebook. Quiero poder eliminar toda la red social adicional a la que apunta, pero ¿no estoy seguro de dónde editar?¿Cómo personalizar la hoja de acciones de ShareKit?
Respuesta
De ShareKit/Core/SHK.m:
[SHK setFavorites: (NSArray *)favs forType:(SHKShareType)type]
+ (void)setFavorites:(NSArray *)favs forType:(SHKShareType)type
{
[[NSUserDefaults standardUserDefaults] setObject:favs forKey:[NSString stringWithFormat:@"%@%i", SHK_FAVS_PREFIX_KEY, type]];
}
favoritos es como:
[NSArray arrayWithObjects:@"SHKTwitter",@"SHKFacebook",@"SHKReadItLater",nil]
tipo es SHKShareType:
typedef enum
{
SHKShareTypeUndefined,
SHKShareTypeURL,
SHKShareTypeText,
SHKShareTypeImage,
SHKShareTypeFile
} SHKShareType;
en SHK.m encuentra esto Método
+ (NSArray *)favoriteSharersForType:(SHKShareType)type
y cambiar
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;
a la siguiente para cada instancia de la sentencia switch:
favoriteSharers = [NSArray arrayWithObjects:@"SHKFacebook", nil];
o lo que otras opciones que desee apoyar (es decir, si solo deseas twitter y Facebook agregan @ "SHKTwitter", a la matriz)
que eliminarán los otros opti ons pero la hoja de acción que muestra las opciones no reflejará el cambio y aún dará la opción más, que también tenemos que deshabilitar.
Así que hacer que ir a SHKActionSheet.m
en este método se puede cambiar el título de "Compartir" a algo más específico (esta parte es opcional), es decir "Compartir con Facebook y Twitter"
+ (SHKActionSheet *)actionSheetForType:(SHKShareType)type
cambio
SHKActionSheet *as = [[SHKActionSheet alloc] initWithTitle:SHKLocalizedString(@"PUT YOUR NEW TITLE HERE")
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
as.item = [[[SHKItem alloc] init] autorelease];
as.item.shareType = type;
que en ese mismo método para suprimir esta línea
// Add More button
[as addButtonWithTitle:SHKLocalizedString(@"More...")];
que eliminará el botón más, pero ahora el código de ahora va a confundir el botón más con el botón de cancelación, por lo que arreglar eso, ir a este método:
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated
y eliminar la siguiente sentencia else if
// More
else if (buttonIndex == sharers.count)
{
SHKShareMenu *shareMenu = [[SHKCustomShareMenu alloc] initWithStyle:UITableViewStyleGrouped];
shareMenu.item = item;
[[SHK currentHelper] showViewController:shareMenu];
[shareMenu release];
}
lo que se pretende hacer con este método es tomar el botón que normalmente es el botón más y abrir más opciones. Por lo tanto, al eliminarlo, el código no tiene acción asociada con el botón cancelar, por lo que simplemente cierra y libera la hoja de acción, creando efectivamente un botón cancelar
Ojalá pudiera darle 10 votos favorables para una explicación tan completa. Esto es exactamente lo que necesitaba, ¡gracias! –
¡Qué gran respuesta! Lo mejor que he visto en SO desde hace un tiempo ... y por alguien con baja reputación como yo! –
excelente explicación ... más 10 uppvotes – Hadi
Consulte my answer en el otro tema con una explicación más detallada.
ahora es fácilmente configurable sin cambiar el código de ShareKit, si utiliza ShareKit 2.0
Básicamente, si sólo utiliza Facebook y Twitter, es más fácil que no se meta con el código de ShareKit. Puede fácilmente crear su propia UIActionSheet con dos botones y llamar a los métodos ShareKit's convenience share.
pregunto por qué votar? Con "meterse con el código de ShareKit" me refiero a personalizar el código de ShareKit en su aplicación (ocultando el botón Más), cuando no es necesario. Esto le generará trabajo adicional si desea actualizar a una versión más nueva de ShareKit. Puede lograr lo mismo utilizando los métodos de conveniencia de los participantes de ShareKit directamente con UIActionSheet estándar clásico. –
Para que los servicios no deseados no aparezcan en la hoja de acciones, simplemente puede eliminar las respectivas clases de servicios compartidos del proyecto.
Ir al proyecto -> Compartidores -> Servicios -> seleccione los archivos .h y .m del servicio respectivo y elimínelos.
Por ejemplo, la opción Facebook se puede eliminar mediante la eliminación de SHKFacebook.hy SHKFacebook.m.
Nota: Deberá verificar la importación de la clase para evitar errores.
La nueva manera de hacer esto con la última versión de ShareKit 2.0 es para sobrescribir los métodos siguientes en su SHKConfigurator (extendiendo 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];
}
La manera más fácil es editar "SHKSharers.plist" y mantener los servicios que necesitas
- 1. Cómo personalizar ActiveAdmin utilizando la solicitud find_by en lugar de ID para todas las acciones
- 2. Integración de ShareKit 2.0 en la aplicación de iPhone
- 3. ¿Cómo personalizar la barra de título de una aplicación Qt a través de la hoja de estilo Qt?
- 4. Botón de cancelación de UIActionSheet que no descarta la hoja de acciones
- 5. ¿Cómo personalizar la url de Jekyll?
- 6. ¿Cómo personalizar la LockScreen de Android?
- 7. Cómo personalizar la apariencia de UISearchBar
- 8. Cómo personalizar la visualización de dired
- 9. Cómo personalizar la serialización XML de WCF
- 10. Cómo personalizar la apariencia de UIPrintInteractionController
- 11. ¿Cómo puedo personalizar la salida de Jenkins?
- 12. ¿Cómo personalizar la salida Zend_Tool?
- 13. Sharekit no funciona en iphone sdk
- 14. ShareKit compatible con iOS 5 ahora?
- 15. Fondo del botón de la barra de acciones
- 16. ¿Cómo modificar la hoja de estilo predeterminada?
- 17. Cómo personalizar UITableView de EKEventViewController?
- 18. Cómo cambio el nombre de la hoja de C# en una hoja de cálculo de Excel
- 19. ¿Cómo puedo cambiar las acciones de la Barra de acciones dinámicamente?
- 20. Cómo personalizar la barra de título y la ventana
- 21. cómo despedir Hoja de acción
- 22. Vista personalizada de la barra de acciones
- 23. ¿Cómo personalizar MPVolumeView?
- 24. Personalizar la barra de búsqueda en Android
- 25. ¿Cómo personalizar la publicación en ASP.NET?
- 26. Cómo personalizar la forma Django etiqueta
- 27. ¿Cómo obtengo mi hoja de estilo @import para anular la hoja de estilo principal?
- 28. ¿Cómo puedo personalizar la estructura de directorios de Jasmine?
- 29. Cómo personalizar el paginador de la tabla de datos PrimeFaces
- 30. Cómo personalizar la vista de sección de TableView - iPhone
... puntos a esta página. –