Id mi piace essere in grado di monitorare se l'utente ha condiviso con Facebook, Twitter, ecc, ma sembra che non ci sia modo di sapere quale metodo è stato selezionato. È lì?UIActivityViewController - c'è un modo per sapere quale attività è stata selezionata?
risposta
È possibile utilizzare i tipi di attività in setCompletionHandler
UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
if([activityType isEqualToString: UIActivityTypeMail]){
NSLog(@"Mail");
}
if([activityType isEqualToString: UIActivityTypePostToFacebook]){
NSLog(@"Facebook");
}
}];
[self presentViewController:activityVC animated:TRUE completion:nil];
tipi di attività integrato per cui il sistema è dotato di supporto per.
NSString *const UIActivityTypePostToFacebook;
NSString *const UIActivityTypePostToTwitter;
NSString *const UIActivityTypePostToWeibo;
NSString *const UIActivityTypeMessage;
NSString *const UIActivityTypeMail;
NSString *const UIActivityTypePrint;
NSString *const UIActivityTypeCopyToPasteboard;
NSString *const UIActivityTypeAssignToContact;
NSString *const UIActivityTypeSaveToCameraRoll;
cura per iOS 8
prega di notare che questo genererà un messaggio di avviso del compilatore in iOS 8, è necessario utilizzare il metodo setCompletionWithItemsHandler
anziché il metodo setCompletionHandler
.
Sostituire:
[activityVC setCompletionHandler:^(NSString *activityType, BOOL completed) {
con:
[activityVC setCompletionWithItemsHandler:^(NSString *activityType, BOOL completed, NSArray *returnedItems, NSError *activityError) {
Grazie questo è utile! Ciò è positivo se ho bisogno di sapere cosa hanno scelto in seguito, cosa che faccio, ma ho anche bisogno di sapere in anticipo. Ad esempio, se qualcuno preme il pulsante twitter, desidero visualizzare un messaggio diverso da quello che faccio con Facebook – Adam
È necessario implementare gli oggetti dati personalizzati conformi al protocollo 'UIActivityItemSource'. È quindi possibile presentare i dati in un formato specifico per il tipo di attività (o semplicemente tracciare il tipo). [NSHipster] (http://nshipster.com/uiactivityviewcontroller/) ha tutti i dettagli. – hagi
solo l'opzione mail è visualizzata ?? come si può aggiungere più opzioni? –
È possibile utilizzare questo lib https://github.com/rdougan/RDActivityViewController per identificare quali l'attività è stata toccata e restituire i dati personalizzati per attività semplicemente implementando il suo protocollo.
in questo modo:
- (NSArray *)activityViewController:(NSArray *)activityViewController itemsForActivityType:(NSString *)activityType
{
if ([activityType isEqualToString:UIActivityTypePostToTwitter]) {
return @[@"Twitter text"];
} else if ([activityType isEqualToString:UIActivityTypeMessage]) {
return @[@"Message text"];
} else if ([activityType isEqualToString:UIActivityTypeMail]) {
return @[@"Mail text"];
} else if ([activityType isEqualToString:UIActivityTypePostToFacebook]) {
return @[@"Facebook text"];
} else {
return @[@"Default text"];
}
}
Spero che vi ho aiutato!
Ho appena rifiutato l'app a causa di questa chiamata al protocollo. Apparentemente è un'API privata. Non usare questa libreria. –
In Swift 2:
activityViewController.completionWithItemsHandler = { activity, success, items, error in
if !success{
print("cancelled")
return
}
if activity == UIActivityTypePostToTwitter {
print("twitter")
}
if activity == UIActivityTypeMail {
print("mail")
}
}
rapida 3
let activityViewController:UIActivityViewController = UIActivityViewController(activityItems: [screenCapture], applicationActivities: nil)
activityViewController.excludedActivityTypes = [UIActivityType.print, UIActivityType.postToWeibo, UIActivityType.copyToPasteboard, UIActivityType.addToReadingList, UIActivityType.postToVimeo]
activityViewController.completionWithItemsHandler = { activity, success, items, error in
if !success{
print("cancelled")
return
}
if activity == UIActivityType.postToFacebook {
print("facebook")
}
if activity == UIActivityType.mail {
print("mail")
}
}
self.present(activityViewController, animated: true, completion: nil)
- 1. UITableView - quale riga è stata selezionata?
- 2. Capire quale icona è stata cliccata su UIActivityViewController
- 3. Come stabilire quale app è stata selezionata da Intent.createChooser?
- 4. UIActivityViewController personalizzare il testo sulla base di attività selezionata
- 5. Soluzione pulita per sapere quale MKAnnotation è stata intercettata?
- 6. C'è un modo per sapere quale versione groovy è stata utilizzata nel progetto Grails?
- 7. Determinare quale estensione di condivisione è stata utilizzata
- 8. Come sapere che l'attività è stata completata?
- 9. Modo corretto per sapere se un'attività è stata distrutta
- 10. Esiste un modo per sapere se un'eccezione MS CRM è stata generata da un plug-in?
- 11. Rileva quale cella è stata selezionata in TDBGrid quando dgRowSelect è impostato su True?
- 12. Come posso sapere se una casella di controllo è stata effettivamente selezionata?
- 13. Su OS X, come faccio a sapere per quale architettura è stata compilata una libreria condivisa?
- 14. Esiste un modo per un'attività per sapere quale frammento è stato appena creato?
- 15. C'è un modo per sapere a quale rete è collegato un iPhone (LTE vs GSM)
- 16. Come posso determinare quale cella di una tabella è stata selezionata?
- 17. Limitazione delle attività di estensione condivisione UIActivityViewController
- 18. Rilevare quale query reattiva è stata attivata
- 19. Quale delle due eccezioni è stata chiamata?
- 20. Come posso sapere quale HubSection è selezionato
- 21. Come posso sapere quale versione di Visual Studio è stata utilizzata per l'ultima volta su un progetto?
- 22. Come sapere quale versione di tomcat è stata incorporata nell'innesto di primavera
- 23. Come sapere se una sessione è stata impostata
- 24. Come sapere in quale file è stata definita una variabile globale js nella console chrome?
- 25. Come sapere quale pulsante è stato premuto?
- 26. Come sapere quale valore variabile è impostato per l'unione?
- 27. In quale modo è stato attivato TAction?
- 28. Come sapere se un'immagine è stata caricata o no? - Paperclip
- 29. Come sapere quale funzione si chiama un altro
- 30. Come sapere se una casella di controllo o un pulsante di opzione è selezionata in Dart?
sempre bello vedere una domanda che stavo per chiedere. – Morkrom