0

私は現在学校のプロジェクトに取り組んでおり、私のiPhoneアプリは2回拒否されましたが、その理由はわかっています。私の問題の解決は難しいですが。ここに私のプロジェクトからの.mファイルがあり、Webベースのアプリがあります。現在、アドレスバーにhttp://しかない場合は、URLのホストが見つからないというエラーが表示されます。これはhttp://のみであり、アプリが拒否されたためです。私がやりたいのは、アドレスバーにhttp://だけが表示されているときに、別のWebサイトに移動することです。助けてください!!さらに、私はiOS6を使用しています

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController


-(void)bannerViewDidLoadAd:(ADBannerView *)banner{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];
    [banner setAlpha:1];
    [UIView commitAnimations];
}
-(void)bannerView:(ADBannerView *)banner didFailToReceiveAdWithError:(NSError *)error{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1];
    [banner setAlpha:0];
    [UIView commitAnimations];
}

-(IBAction)press {

    label.hidden = 0;
    addressBar.hidden = 0;
    browserPlace.hidden = 1;
    button.hidden = 1;
    button2.hidden = 0;

}
-(IBAction)press2
{
    label.hidden = 1;
    addressBar.hidden = 1;
    browserPlace.hidden = 0;
    button.hidden = 0;
    button2.hidden = 1;
}
- (void)viewDidLoad
{
    label.hidden = 1;
    addressBar.hidden = 1;
    browserPlace.hidden = 0;
    button.hidden = 0;
    button2.hidden = 1;
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    addressBar.text = [defaults objectForKey:@"history"];




    [self searchBarSearchButtonClicked:addressBar];

}

-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
{
    [searchBar resignFirstResponder];
    [browserPlace loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[self parseUrl:addressBar.text]]]];

}

-(NSString*) parseUrl: (NSString*) url
{
    if ([url hasPrefix:@"http://"] || [url hasPrefix:@"https://"]) 
        return url;
    else
        return [NSString stringWithFormat:@"http://%@", url];



}




-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    return YES;
}

-(void)webViewDidStartLoad:(UIWebView *)webView
{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:addressBar.text forKey:@"history"];

    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];
    label2.hidden = 0;

}

-(void)webViewDidFinishLoad:(UIWebView *)webView
{
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
    label2.hidden = 1;
}

-(void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
    NSLog(@"%@", [error description]);
    [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];
    label2.hidden = 1;
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"ERROR" message:[error description] delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [alert show];


}

-(void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsCancelButton:YES animated:YES];
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:YES];
}

-(void)searchBarTextDidEndEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsCancelButton:NO animated:YES];
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
}

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    [searchBar resignFirstResponder];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
4

2 に答える 2

1

メソッドを更新しますparseUrl:。URLが単に「http://」であるかどうかを確認します。

- (NSString *)parseUrl:(NSString *)url {
    if (url.length == 0 || [url isEqualToString:@"http://"]) {
        return @"http://www.someplacecool.com"; // put your desired URL here
    } else if ([url hasPrefix:@"http://"] || [url hasPrefix:@"https://"]) {
        return url;
    } else {
        return [NSString stringWithFormat:@"http://%@", url];
    }
}

また、ユーザーが他の無効なURLを入力した場合に備えて、他のエラーチェックを追加する必要があります。

于 2013-02-21T00:58:12.910 に答える
0

活用できると思います

  • (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request NavigationType:(UIWebViewNavigationType)navigationType

[リクエストURL]とそのスキームを確認できます。

このメソッドでURLを別のURLにリダイレクトし、それぞれのBOOL値(YES / NO)を返すようにしてください。

于 2013-02-21T01:15:53.237 に答える