Je suis en train de construire un contrôle personnalisé basé sur un UIWebView et le compiler dans une bibliothèque pour réutilisation. Tout fonctionnait très bien quand j'avais le code tous ensemble dans une application de test unique mais j'ai du mal à mettre en place un délégué pour la vue d'une bibliothèque. Il est à noter que l'exemple d'application utilisait le constructeur d'interface et que le délégué était donc défini via IB.Définition d'un UIWebViewDelegate programatically
NewsView.h:
@interface NewsView : UIWebView {
NSObject<UIWebViewDelegate> *delegate;
}
@property (nonatomic, assign) IBOutlet NSObject<UIWebViewDelegate> *delegate;
Dans la mise en oeuvre toutes mes méthodes d'initialisation appellent une méthode commune viewInit
NewsView.m
@implementation NewsView
@synthesize delegate;
- (void)viewInit {
self.delegate = [[NewsViewDelegate alloc] init];
}
Si l'utilisateur clique sur l'un des titres dans la vue, j'ai besoin du délégué pour intercepter les clics et lancer Safari.
NewsViewDelegate.h
@interface NewsViewDelegate : NSObject <UIWebViewDelegate> {
}
NewsViewDelegate.m
// Intercept URL events
- (BOOL)webView:(UIWebView *)myWebView shouldStartLoadWithRequest:
(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"URL Changed");
// Check to see if this is a click event
if (navigationType == UIWebViewNavigationTypeLinkClicked) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[[request URL] absoluteString]]];
return NO;
}
return YES;
}
Malheureusement shouldStartLoadWithRequest ne sera jamais appelé et ainsi de clics ne sont pas lancés à l'extérieur.
Je suis sûr que je suis juste manque quelque chose, toute aide serait grandement apprécié.
Merci!
Merci Tyson, je vais essayer ce changement et faire un rapport. J'apprécie ton aide. Y a-t-il un lien que vous pourriez partager concernant le conseil de ne pas sous-classer? J'ai lu la vue d'ensemble à http://developer.apple.com/mac/bibliothèque/DOCUMENTATION/Cacao/Référence/WebKit/Classes/WebView_Class/Référence/Reference.html et ne l'ai pas (ou tout simplement avoir la fatigue doc et manqué). Merci encore! –
Ce sont la référence OS X WebView, vous devriez regarder la référence iPhone UIWebView. http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIWebView_Class/Reference/Reference.html Heureusement, les docs iPhone montrent toujours d'abord dans mes recherches. Sinon, je suis sûr que je ferais probablement la même chose tout le temps. :-) Comme – kubi
kubi dit, il est dans la documentation de l'iPhone ici: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIWebView_Class/Reference/Reference.html aux notes de sous-classement dans la liste. Matt Gallagher a un bon poste sur les clusters de classe subclassing ici: http://cocoawithlove.com/2008/12/ordereddictionary-subclassing-cocoa.html –