简单实现UIWebView翻页返回效果,原理就是两个ViewController互跳,处理下UIWebView的shouldStartLoadWithRequest来控制跳转;利用Navigation Controller实现跳转和手势处理,跳转时把需要访问的url传过去,也就是两个ViewController之间互相传来传去。
部分代码如下:
@implementation A @synthesize objUrl; - (void)viewDidLoad { [superviewDidLoad]; // Do any additional setup after loading the view. self.automaticallyAdjustsScrollViewInsets=NO;//防止滚动类头部出现空行 if ([[[UIDevicecurrentDevice] systemVersion] floatValue] >= 7.0) { self.navigationController.interactivePopGestureRecognizer.enabled = YES; self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self; } NSURLRequest *request=[NSURLRequestrequestWithURL:[NSURLURLWithString:objUrl]]; //NSLog(@"网址:%@",objUrl); [webViewsetDataDetectorTypes:UIDataDetectorTypePhoneNumber]; [webViewsetUserInteractionEnabled:YES]; //是否支持交互 [webViewloadRequest:request]; [self.viewaddSubview: webView]; [webViewsetDelegate:self]; } -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if(navigationType==UIWebViewNavigationTypeLinkClicked)//判断是否是点击链接 { UIStoryboard *story = [UIStoryboardstoryboardWithName:@"Main"bundle:[NSBundlemainBundle]]; UIViewController *myView = [story instantiateViewControllerWithIdentifier:@"B"]; [myView setValue:request.URL.absoluteStringforKey:@"objUrl"]; [self.navigationControllerpushViewController:myView animated:YES]; returnNO; } else{ returnYES; } }
完整代码可到 http://code.cocoachina.com/detail/316925/UIWebView%E7%BF%BB%E9%A1%B5%E8%BF%94%E5%9B%9E%E6%95%88%E6%9E%9C%EF%BC%88%E5%8F%98%E9%80%9A%E6%96%B9%E6%B3%95%EF%BC%89/ 下载,已经上传了。