stackoverflowに関する多くの質問を見てUIWebViewDelegates
きましたが、それらは私の問題とは異なるものであるか、理解するには頭が多すぎます (またはその両方)。
私のUIWebView
読み込みは問題ありませんが、読み込み後にユーザーが webview 内のリンクをクリックした場合に特定のアクションを実行できるようにしたいと考えています。In viewDidLoad
I've set self.webV.delegate = self;
(は、私のクラスwebV
をインスタンス化するプロパティです)。ビュー コントローラー クラスに次のコードを追加しました。これは、実際のメソッドの作業を開始する前のテストとしてのみです。GHWebView
UIWebView
-(BOOL) webView:(GHWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (navigationType==UIWebViewNavigationTypeLinkClicked)
{
NSLog(@"Yes!");
}
else
{
NSLog(@"No.");
}
return YES;
}
私がやろうとしているのは、「はい!」を得ることです。ユーザーがロードされた Web ビュー内のリンクをクリックするとログに記録されます。しかし、webview が読み込まれ、その中のリンクをクリックすると、NSLog がありません。どうすればいいですか?
(あなたの助けと、デリゲートをまだ理解していない誰かとの忍耐に、前もって感謝します....)
編集:さて、これがGHWebViewの関連コードであると私が思うものです。 今のところ、プロパティGHWebView.h
requ ( NSURLRequest
)、conn ( NSURLConnection
)、および urlData ( NSData
) とメソッド. を宣言しています-(void)loadWebViewWithbaseURLString:bus withURLString:us
。次にGHWebView.m
、メソッドを定義します。
-(void)loadWebViewWithbaseURLString:bus withURLString:us
{
self.requ = [NSURLRequest requestWithURL:[NSURL URLWithString:us] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval: 20];
self.conn=[[NSURLConnection alloc] initWithRequest:self.requ delegate:nil];
NSError *error=nil;
NSURLResponse *resp=nil;
if (self.conn)
{
self.urlData = [NSURLConnection sendSynchronousRequest: self.requ returningResponse:&resp error:&error];
NSString *htmlString = [[NSString alloc] initWithData:self.urlData encoding:NSUTF8StringEncoding];
[self loadHTMLString:htmlString baseURL:[NSURL URLWithString:bus]];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] init];
alert.title = @"Unfortunately, I seem to be having a hard time connecting to the Internet. Would you mind trying again later? I'll make it worth your while, I promise.";
[alert show];
}
}
デリゲートを宣言し、ヘッダー ファイルにプロトコルを追加する必要があることはわかっています。次のようなコードを追加する必要があると思います。
@property (nonatomic, assign) id<UIWebViewDelegate> delegate;
@protocol GHWebViewDelegate <UIWebView>
-(void)loadWebViewWithbaseURLString:bus withURLString:us;
@end
しかし、実装ファイルに戻ってメソッド内のself
s をs に置き換えようとすると、エラーが発生します。どうすればいいですか?self.delegate
-(void)loadWebViewWithbaseURLString:bus withURLString:us
property not found on object of type