Badz
Membre
Bonjour à tous, comme je l'ai dit dans ma présentation je suis débutant en développement iPhone et je ' m'amuse un peu ' à essayer des choses, ici ma question est la suivante :
dans ma view j'ai mit un simple button et je voudrais à l'action sur ce bouton ouvrir un pdf qui est dans mon projet.
Merci d'avance pour vos réponses.
dans ma view j'ai mit un simple button et je voudrais à l'action sur ce bouton ouvrir un pdf qui est dans mon projet.
Merci d'avance pour vos réponses.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il faudrait d'abord une question... /kiss.gif' class='bbc_emoticon' alt=':-*' />
Aller, au hasard...utilises une webview.
[font=helvetica, arial, sans-serif]Je pensais [/font][font=helvetica, arial, sans-serif]ma question logique, autant pour moi, le but serait juste d'ouvrir le pdf après l'action sur le bouton en faite, donc comment faire ? quelle méthode utiliser ?[/font]
Je pensais ma réponse logique...Utilises une webview pour afficher ton pdf.
Continuant ma petite appli pour lire, chercher etc dans un pdf j'ai un soucis que je n'arrive pas à résoudre :
Le message d'erreur explique clairement ce qui ne va pas : les méthodes "highlightAllOccurencesOfString" et "removeAllHighlights" n'existent pas, ce ne sont pas des méthodes de UIWebView.
Et même si tu mettais en doute le message d'erreur qui est pourtant plutôt clair, le premier réflexe à avoir dans ce cas est d'aller dans la documentation Apple. Tu vas regarder dans la doc de UIWebView, et t'apercevoir qu'en effet ces méthodes sont inexistantes.
C'est bien beau de piquer des bouts de code sur le net, mais dans ce cas il faut lire tout l'article qui explique comment faire et comprendre ce qui y est expliqué, et pas se contenter de copier simplement le code.
Déjà si tu lis bien l'article il fait une catégorie (au sens ObjC) sur UIWebView, et de l'injection de code JS dans la WebView pour pouvoir rajouter ces méthodes. C'est d'ailleurs une bonne idée et une pratique très propre, mais si tu veux faire de même, il faut bien sûr suivre les étapes logiques, rajouter le JS à ton bundle, faire la catégorie, et l'importer avant de pouvoir l'utiliser.
Et si en plus tu lis un peu l'article tu comprends comment ça marche, à savoir que ça traverse l'arbre DOM de la page HTML (par la méthode DFS). Or si toi tu utilises une WebView non pas pour afficher du HTML mais une page PDF, forcément tu auras du mal à avoir un DOMTree...
J'ai utilisé la méthode SearchWebView qui se trouve dans [font=helvetica, arial, sans-serif]SearchWebView.h[/font] dans mon code, et maintenant j'ai une erreur qui me dit qu'il ne sait pas quelle méthode utiliser pour les 2 fonctions highlight et removehighlight ...
Désolé si je suis pas clair j'ai vraiment du mal ^^
N'oublie pas qu'on n'est pas devant ton code, on ne peut pas deviner : il nous faut un peu plus d'informations.
@interface SearchWebView : UIWebView
- (NSInteger)highlightAllOccurencesOfString:(NSString*)str;
- (void)removeAllHighlights;
@end
SearchWebView.m:
#import "SearchWebView.h"
#import "ViewController.h"
@implementation SearchWebView
- (NSInteger)highlightAllOccurencesOfString:(NSString*)str
{
NSString *path = [[NSBundle mainBundle] pathForResource:@UIWebViewSearch ofType:@js];
NSString *jsCode = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
[self stringByEvaluatingJavaScriptFromString:jsCode];
NSString *startSearch = [NSString stringWithFormat:@uiWebview_HighlightAllOccurencesOfString(';%@'",str];
[self stringByEvaluatingJavaScriptFromString:startSearch];
NSString *result = [self stringByEvaluatingJavaScriptFromString:@uiWebview_SearchResultCount];
return [result integerValue];
}
- (void)removeAllHighlights
{
[self stringByEvaluatingJavaScriptFromString:@uiWebview_RemoveAllHighlights()];
}
@end
viewController.h :
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UIWebViewDelegate, UIScrollViewDelegate> {
IBOutlet UIWebView *theWebView;
}
@property (retain, nonatomic) IBOutlet UIWebView *theWebView;
-(IBAction)searchButtonPressed:(id)sender;
-(IBAction)clearHighlights:(id)sender;
@end
viewController.m:
#import "ViewController.h"
#import "SearchWebView.h"
@implementation ViewController
@synthesize theWebView;
-(IBAction)searchButtonPressed:(id)sender
{
[theWebView highlightAllOccurencesOfString:@Lorem];
}
-(IBAction)clearHighlights:(id)sender
{
[theWebView removeAllHighlights];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
//Load the HTML from the main application bundle
NSString *thePath;
NSBundle *thisBundle = [NSBundle mainBundle];
thePath = [thisBundle pathForResource:@document ofType:@pdf];
NSURL *theURL = [NSURL fileURLWithPath:thePath];
[theWebView loadRequest:[NSURLRequest requestWithURL:theURL]];
}
Voilà tout le code et j'ai bien rajouté le .js au bundle.
Merci à ceux qui m'ont aidé
La moindre des choses ne serait-elle pas d'indiquer la solution qui t'a permis de résoudre ton problème, pour que si certains ont le même souci que toi ils puissent profiter de cette solution ?!
Simple et très efficace.