我正在使用 XWalkView,它是 WKWebView 的子类,以编程方式作为子视图添加到容器视图中。我正在尝试缩放 WKWebView 的内容页面,但它第一次没有缩放。WKWebView 随后会缩放内容页面,即当我捏缩放或双击缩放时,它会缩放 WKWebView 本身或容器视图(我的猜测),然后再次进行缩放手势,内容页面会被缩放(这是预期的行为)。
问题是如何在执行缩放手势时使 WKWebView 的内容页面缩放。
我符合以下UIScrollViewDelegate
协议ViewController.h
:
@interface ViewController : UIViewController<UIScrollViewDelegate, WKNavigationDelegate, WKUIDelegate>
我将委托设置为 self ,viewDidLoad
如下所示:
xWalkView.scrollView.delegate = self;
设置缩放比例viewDidLoad
如下:
xWalkView.scrollView.minimumZoomScale = 1;
xWalkView.scrollView.maximumZoomScale = 6;
& 实现协议方法ViewController.m
如下:
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
if (shouldPageNotZoom) {
NSLog(@"viewForZoomingInScrollView YES");
return nil;
} else {
NSLog(@"viewForZoomingInScrollView NO");
return xWalkView.scrollView.subviews[0];
}
}
-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
}
我正在使用 BOOL shouldPageNotZoom 并根据 URL 将其设置为 YES 或 NO,具体取决于是否需要缩放。在需要缩放的页面上,我可以看到NSLog(@"viewForZoomingInScrollView NO");
在日志区域中打印的 else 块 ( ) 的日志以及在不需要缩放的页面上,我可以看到 if 块 ( NSLog(@"viewForZoomingInScrollView YES");
) 的日志。哪个正在工作。唯一的问题是内容页面不会缩放第一个缩放手势,而是缩放 WKWebView 或容器视图(我猜),但会缩放后续缩放手势。
经过一番观察,我发现滚动视图索引 0 处的子视图正在第一次和后续时间缩放(但内容页面在后续时间不是第一次缩放),正在返回viewForZoomingInScrollView
。应该是这样,&是。我通过将标签值分配给每个视图并通过scrollViewDidEndZooming
在日志区域的方法中记录标签值来查看标签值,如下所示:
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
if (shouldPageNotZoom) {
NSLog(@"viewForZoomingInScrollView YES");
return nil;
} else {
NSLog(@"viewForZoomingInScrollView NO");
xWalkView.scrollView.tag = 20;
xWalkView.tag = 15;
xWalkView.scrollView.subviews[0].tag = 10;
_containerView.tag = 5;
return xWalkView.scrollView.subviews[0];
}
}
-(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale {
NSLog(@"tag %li", (long) view.tag);
}
给出以下日志:
2017-11-28 17:21:36.610753+0530 MyApp[4614:241659] tag 10 //Getting this 1st time of zooming
2017-11-28 17:21:59.369461+0530 MyApp[4614:241659] tag 10 //Getting this at subsequent zooms
我不知道我错过了什么。
如果需要任何澄清,请发表评论。