UIWebView的内部结构:UIWebView之下主要是两大view, UIWebViewScrollView和UIWebBrowserView
其中,UIWebView里的事UIWebViewScrollView,UIWebViewScrollView里的是UIWebBrowserView
而UIWebBrowserView则是一个很复杂的类,目前可知,它的继承关系是:
UIWebBrowserView->UIWebDocumentView->UIWebTiledView->UIView
代码实现 UIWebView添加S滑动,拖拽手势
// 添加手势
UIPanGestureRecognizer *apan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(goPanNext:)];
apan.delegate = self;
apan.maximumNumberOfTouches=1;
apan.minimumNumberOfTouches=1;
[_webView addGestureRecognizer:apan];
// 为UIWebView中的UIWebViewScrollView和UIWebBrowserView添加手势
for (UIView* scrollView in _webView.subviews) {
scrollView.userInteractionEnabled = YES;
[scrollView addGestureRecognizer:apan];
for (UIView* browserView in scrollView.subviews) {
browserView.userInteractionEnabled = YES;
[browserView addGestureRecognizer:apan];
}
}
//=======================================================================
#pragma mark-手势,用于左右切换
- (void)goPanNext:(UIPanGestureRecognizer *)sender
{
static CGPoint begainPoint;
CGPoint endPoint;
if (sender.state==UIGestureRecognizerStateBegan) {
begainPoint =[sender translationInView:_webView];
}
if (sender.state==UIGestureRecognizerStateEnded) {
endPoint =[sender translationInView:_webView];
if (endPoint.x-begainPoint.x<0) {
[UIView animateWithDuration:0.5 animations:^{
[_YQScollView scrollRectToVisible:CGRectMake(kDeviceWidth,0,kDeviceWidth,self.view.frame.size.height-_changeHeightScrollView-64) animated:NO]; // 触摸pagecontroller那个点点 往后翻一页 +1
} completion:^(BOOL finished) {
}];
_segmentView.touchIndex = 1;
}
}
}
//=======================================================================
#pragma mark- UIWebView添加手势,必须实现
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}