shouldStartLoadWithRequest nicht genannt in meiner iPhone-App

Ich habe einen view-controller mit einem UIWebView-controller. Ich versuche, das javascript in der html-Inhalt der web-Ansicht, um einige Informationen zu meinem objective-c-code. Ich stieß auf eine Reihe von Beispielen, online, set-Fenster.Lage in einer javascript-Funktion und dann fangen die generierten Ereignissen durch setzen der view-controller, um die web-Ansicht zu delegieren und fangen es in der shouldStartLoadWithRequest Funktion. Leider kann ich es nicht zu funktionieren, weil für mich shouldStartLoadWithRequest wird nie aufgerufen, obwohl ich die Einstellung der web-Ansicht delegieren.

Mein code ist wie folgt:

Schnittstelle:

@interface StoryTextViewController : UIViewController <UIWebViewDelegate>
{
    IBOutlet UIWebView *storyWebView;   
    NSString *information;
}

@property (nonatomic, retain) IBOutlet UIWebView *storyWebView;
@property (nonatomic, retain) NSString *information;

@end

In der Schnittstelle, die *Informationen, die variable ist gesetzt, von der früheren Ansicht, dass die Anrufe StoryTextViewController.

Umsetzung:

#import "StoryTextViewController.h"

@implementation StoryTextViewController

@synthesize storyWebView;
@synthesize information;

- (NSString *) contructHTMLText
{
    NSString *HTMLText = @"";

    NSArray *words = [information componentsSeparatedByString:@" "];
    NSString *header =
    @"<html>\n"
    "<head>\n"
    "<script type=\"text/javascript\">\n"

    "function marktext(theSpanID)\n"
    "{\n"
    "   var theSpan=document.getElementById(theSpanID);\n"
    "   if (theSpan.className == \"noHilite\")\n"
    "   {\n"
    "       theSpan.className = \"hilite\";\n"
    "       window.location = \"true\";\n"
    "   }\n"
    "   else\n"
    "   {\n"
    "       theSpan.className = \"noHilite\";\n"
    "       window.location = \"false\";\n"
    "   }\n"
    "}\n"

    "</script>\n"

    "<style type=\"text/css\">\n"

    ".hilite\n"
    "{\n"
    "   background-color:red;\n"
    "   color:white;\n"
    "   font: bold 60px arial,sans-serif\n"
    "}\n"

    ".noHilite\n"
    "{\n"
    "   background-color:white;\n"
    "   color:black;\n"
    "   font: 60px arial,sans-serif\n"
    "}\n"

    "</style>\n"

    "</head>\n"
    "<body>\n"
    "<div class=\"storyText\">\n";

    NSString *tailer = 
    @"</div>\n"
    "</body>\n"
    "</html>\n";

    HTMLText = [HTMLText stringByAppendingString:header];
    for (NSInteger i = 0; i < [words count]; i ++)
    {
        NSString *tag = [NSString stringWithFormat:@"   <span id=\"mytext%d\" class=\"noHilite\" onclick=\"marktext(\'mytext%d\')\">%@</span>&nbsp;\n", i, i, (NSString *)[words objectAtIndex:i]];
        HTMLText = [HTMLText stringByAppendingString:tag];
    }
    HTMLText = [HTMLText stringByAppendingString:tailer];
    NSLog(HTMLText);
    return HTMLText;
}

//The designated initializer. Override to perform setup that is required before the view is loaded.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
        storyWebView.delegate = self;
    }
    return self;
}

//Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    [super viewDidLoad];
    NSString *HTMLData = [self contructHTMLText];
    [storyWebView loadHTMLString:HTMLData baseURL:[NSURL URLWithString: @""]];  
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning]; //Releases the view if it doesn't have a superview
    //Release anything that's not essential, such as cached data
}

- (void)dealloc {
    [super dealloc];
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{   
    //handle event here    
    return true;
}

@end

Was passiert ist, dass im Grunde die constructHTML Funktion nimmt den text in die *Informationen, die variable und wickelt jedes Wort im text mit einigen html und javascript, so dass, wenn ein Wort geklickt wird, wird ein css-hoch-Beleuchtung angewendet wird, auf es. Was ich will zu tun ist, um die Anzahl der high-brennende Worte. Ich tun dies, indem Sie versuchen, um pass etwas in der Funktion, das ist immer aufgerufen, wenn ein Wort geklickt, aber wie ich schon sagte, die shouldStartLoadWithRequest Methode das ist, soll geschossen werden, niemals ausgeführt.

Ich habe gesehen, eine Menge Leute tun diese Art der Sache, aber ich kann nicht scheinen, um herauszufinden, warum es nicht läuft für mich

InformationsquelleAutor | 2009-07-02
Schreibe einen Kommentar