Safari ブラウザへの uiwebview のリンクを開きたいのですが、viewController に shouldStartLoadWithRequest メソッドを実装すると、コードは完全に機能しますが、同じクラスに shouldStartLoadWithRequest を実装し、UIWebView のデリゲートを自分自身に設定すると、機能しません。エラーEXC_BAD_ACCESS(コード= 2、アドレス= 0x9)のアセンブリレベルコード 私のファイルは次のとおりです
//ShowView.h ファイルの内容
#import <UIKit/UIKit.h>
@interface ShowView : UIView <UIWebViewDelegate> {
}
- (void) showViewFunction;
@property (nonatomic, assign) UIViewController *mainViewContObj;
@end
//ShowView.m ファイルの内容は次のとおりです。
#import "ShowView.h"
@implementation ShowView
- (void) showViewFunction {
UIWebView *aWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 150)];
aWebView.autoresizesSubviews = YES;
aWebView.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
[aWebView setDelegate:self];
NSString *urlAddress = @"http://localhost/test/index.php";
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
aWebView.delegate = self;
[aWebView loadRequest:requestObj];
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
[[[self mainViewContObj] view] addSubview:aWebView];
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType {
NSLog(@"In shouldStartLoadWithRequest method");
if ([[[request URL] absoluteString] isEqual:@"http://localhost/test/index.php"])
return YES;
[[UIApplication sharedApplication] openURL:[request URL]];
return NO;
}
@end
// ViewController.h の内容
#import "ViewController.h"
#import "ShowView.h"
@interface mnetViewController ()
@end
@implementation mnetViewController
- (void)viewDidLoad {
[super viewDidLoad];
MNETMobAd *bannerObj = [[MNETMobAd alloc] init];
bannerObj.mainViewContObj = self;
[bannerObj showAd];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
時々 html ページが表示されますが、リンクをクリックすると同じ UIWebview ウィンドウで開き、shouldStartLoadWithRequest メソッドにすら入っていません。何か問題がありますか?