Einstellung einer UIWebViewDelegate programmgesteuert

Ich versuche zum erstellen eines benutzerdefinierten Steuerelements basierend auf einer UIWebView und kompilieren Sie es in einer Bibliothek zur Wiederverwendung. Alles lief gut, wenn ich hatte den code alle zusammen in einem einzigen test-app, aber ich habe einige Probleme beim einrichten ein der Delegierten für die Ansicht für eine Bibliothek. Der Hinweis, die Beispiel-app verwendet, interface builder und somit die Stellvertretung wurde festgelegt, über IB.

NewsView.h:

@interface NewsView : UIWebView {
   NSObject<UIWebViewDelegate> *delegate;
}
@property (nonatomic, assign) IBOutlet NSObject<UIWebViewDelegate> *delegate;

In der Umsetzung alle meine Initialisierung Methoden aufrufen, eine gemeinsame Methode viewInit

NewsView.m

@implementation NewsView

@synthesize delegate;

- (void)viewInit {

    self.delegate = [[NewsViewDelegate alloc] init];
}

Wenn der Benutzer klickt auf eine der überschriften in der Ansicht ich brauche die Delegierten zum abfangen von Mausklicks und starten Sie 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;
}

Leider shouldStartLoadWithRequest nie aufgerufen wird, und also Klicks, die nicht von außen angestoßen.

InformationsquelleAutor | 2010-02-07
Schreibe einen Kommentar