La documentation d'Apple pour UIDocumentInteractionController presentOpenInMenuFromBarButtonItem: animated: method indique que "S'il n'y a aucune application enregistrée qui supporte l'ouverture du document, le contrôleur d'interaction du document n'affiche pas de menu." Dans mon application, je veux afficher un bouton si et seulement si il ya une application sur l'appareil qui va l'ouvrir. (Je veux seulement que le bouton ouvre un menu pour ouvrir un fichier, je ne veux pas QuickLook, Copier ou Imprimer). Dans l'état actuel des choses, si le bouton est là, mais qu'aucune application n'est enregistrée pouvant ouvrir le fichier concerné, l'utilisateur obtient l'expérience insatisfaisante d'un bouton qui ne fait rien lorsqu'il est engagé. Donc, puis-je savoir s'il y a des applications enregistrées ou non qui acceptent l'ouverture d'un type de document spécifique? De toute évidence, les instances UIDocumentInteractionController peuvent le trouver. Existe-t-il un moyen API public de le découvrir?Comment dire (par programmation) s'il y a des applications enregistrées qui supportent l'ouverture d'un type de document spécifique?
6
A
Répondre
11
OK, plus de recherche révèle un utilisateur stackoverflow frenchkiss-dev a un solution - dérivé de lire les docs plus soigneusement que moi et une pensée latérale. Mon code ci-dessous, basé sur la réponse de frenchkiss-dev, se trouve dans une méthode ViewDidAppear et désactive mon bouton si l'ouverture puis la fermeture du menu de fichier ouvert (sans animation) révèle qu'il n'y a pas d'applications pouvant gérer l'ouverture du fichier. Le contexte de ce snippet est qu'un UIDocumentInteractionController a déjà été configuré dans viewDidLoad et est accessible via [self docInteractionController].
BOOL isAnAppToOpenURL = [[self docInteractionController] presentOpenInMenuFromRect:CGRectZero inView:[self view] animated: NO];
[[self docInteractionController] dismissMenuAnimated:NO];
if (!isAnAppToOpenURL)
{
// iOS think NO app is present on the device that
// can open the URL set on the UIDocumentInteractionController
[[self openFileButton] setEnabled:NO];
}
1
//Connect up theOpenInBtn in IB
@interface DocumentViewerViewController()
{
IBOutlet UIWebView *webView;
NSURL *fileURL;
NSData *fileOnline;
UIDocumentInteractionController *dic;
IBOutlet UIBarButtonItem *theOpenInBtn;
}
(void)viewDidLoad
{
[super viewDidLoad];
BOOL isAnAppToOpenURL = [dic presentOpenInMenuFromRect:CGRectZero inView:[self view] animated: NO];
[dic dismissMenuAnimated:NO];
if (!isAnAppToOpenURL)
{
// iOS think NO app is present on the device that
// can open the URL set on the UIDocumentInteractionController
[theOpenInBtn setEnabled:NO];
}
}
Questions connexes
- 1. Y a-t-il une liste de cartes vidéo qui supportent la programmation GPGPU?
- 2. D'autres langages de programmation supportent implicitement "a la Scala"
- 3. URL des applications enregistrées sur Facebook
- 4. Y a-t-il des applications écrites dans le langage de programmation Io? (Ou, distribuer des applications Io.)
- 5. Y a-t-il de bons films/documentaires sur la programmation des applications?
- 6. Comment pouvez-vous dire quel type d'erreur une erreur API graphique est par programmation?
- 7. Quels navigateurs supportent `overflow-y`?
- 8. python, comment dire quel type de obj a été retourné
- 9. Document de défilement Webkit.net par programmation
- 10. Y at-il des moteurs de templates Python qui supportent Python 3.x
- 11. Y a-t-il des cartes graphiques non mobiles qui ne supportent pas le "float de précision highp"?
- 12. Type de contenu drupal 7 par programmation
- 13. Comment dire ce qu'il y a dans un objet Javascript
- 14. Comment les développeurs peuvent-ils modifier un document Google par programmation? Y a-t-il une API Docs?
- 15. Y a-t-il une pile technologique qui facilite la connexion des applications Android?
- 16. programmation prolog il y a quelqu'un?
- 17. Protéger un document Word par programmation à l'aide de Java
- 18. Y a-t-il des plates-formes qui ne supportent pas les mutex réentrants ou les verrous récursifs?
- 19. Comment ouvrir un document MS Word (.doc) dans Matlab par programmation dans une section spécifique
- 20. Programmation des applications pour Excel
- 21. Ouverture d'un document par programmation en C++
- 22. masquer des applications par programme
- 23. Cessez-vous encore des navigateurs qui ne supportent pas JavaScript?
- 24. Enum qui appartient à un type spécifique
- 25. se déconnecte par programmation d'un utilisateur "spécifique"
- 26. Dire comment un argument a été reçu par une fonction?
- 27. iPhone - sélection par programmation des claviers de langue
- 28. Y a-t-il un moyen de changer le type de contenu d'un document XML, dans le document XML?
- 29. Créer un nouveau document par programmation dans le cacao
- 30. Y a-t-il des exemples pratiques qui utilisent Object :: *