【发布时间】:2017-11-28 06:35:23
【问题描述】:
我正在使用 XWalkView,它是 WKWebView 的子类,以编程方式作为子视图添加到容器视图中。我正在尝试缩放 WKWebView 的内容页面,但它第一次没有缩放。 WKWebView 随后会缩放内容页面,即当我捏缩放或双击缩放时,它会缩放 WKWebView 本身或容器视图(我的猜测),然后再次执行缩放手势,内容页面会被缩放(这是预期的行为)。
问题是如何让 WKWebView 的内容页面在执行缩放手势时进行缩放。
我的ViewController.h 中的UIScrollViewDelegate 协议如下:
@interface ViewController : UIViewController<UIScrollViewDelegate, WKNavigationDelegate, WKUIDelegate>
我在viewDidLoad 中将代理设置为self,如下所示:
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,具体取决于是否需要缩放。在需要缩放的页面上,我可以在日志区域和不需要缩放的页面上看到 else 块的日志 (NSLog(@"viewForZoomingInScrollView NO");),我可以看到 if 块的日志 (NSLog(@"viewForZoomingInScrollView YES");)。哪个正在工作。唯一的问题是内容页面不会在第一个缩放手势上缩放,而是 WKWebView 或容器视图被缩放(我猜),而是在后续缩放手势上缩放。
经过一番观察,我发现滚动视图索引 0 处的子视图第一次和后续时间都被缩放(但内容页面不是第一次缩放后续时间),它在 @ 返回987654332@。应该是这样,&是。我通过将标签值分配给每个视图并通过在日志区域的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
我不知道我错过了什么。
如果需要任何澄清,请发表评论。
【问题讨论】:
标签: ios objective-c zooming wkwebview xwalkview