uiwebviewでジェスチャーを追加し、hrefにJSで呼び出せない問題を解決

1413 ワード

問題の概要
最近、アプリを作っています.内容は主にHTML 5です.ページにはこのようなコードがあります.ホームページに戻る機能キーにはjs制御があります.コードは以下の通りです.
UIWebViewDelegateのエージェントメソッドを引き続き使用する場合は、hrefラベルの内容を取得できません:-(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{ }ソリューション
  • まずuiwebviewにジェスチャーを追加します.コードは以下の通りです.UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTap:)]; tap.delegate=self; tap.cancelsTouchesInView=NO; [_webaddGestureRecognizer:tap]; NSURLRequest*request = [NSURLRequestrequestWithURL:[NSURLURLWithString:_url]]; [_webloadRequest:request];
  • ジェスチャーイベント-(void)handleSingleTap:(UITapGestureRecognizer*)sender { NSLog(@"%s",__func__); CGPointpt = [senderlocationInView:self.web]; NSString*url = [NSStringstringWithFormat:@"document.elementFromPoint(%f, %f).href", pt.x, pt.y]; // href NSString*urlString = [self.webstringByEvaluatingJavaScriptFromString:url]; NSLog(@"urlString = %@",urlString); if([urlStringcontainsString:@"nativecall.back()"]) { if([_webcanGoBack]) { [_webgoBack]; }else{ [self.navigationControllerpopViewControllerAnimated:YES]; } }else if([urlStringcontainsString:@"nativecall.home()"]){ [self.navigationControllerpopToRootViewControllerAnimated:YES]; } }
  • をキャプチャ