我有一个UIWebView控制器,它在故事板中设置,并作为导航控制器的详细控制器推送。 UIWebView以我想要的方式显示,完全位于半透明导航栏下方,但是当您刷新UIWebView时,它每次都会跳起64个像素,如果您点击足够的次数,最终会返回到网页的顶部。
我已经知道这是由故事板自动设置的UIWebView滚动视图插图引起的,但我想留下这一点,因为我喜欢让UIWebView的内容流在半透明导航栏下面。
有没有办法可以解决这个64像素每次跳起而没有用户看到它的情况?基本上当用户点击刷新时,它应该刷新到页面的那个位置而不再“跳”。
感谢您提供的任何帮助。
答案 0 :(得分:0)
您应该将iOS 6/7 Delta Y参数设置为+64(如果您在iOS 6视图中构建应用程序)或-64(如果您选择了iOS 7):)
答案 1 :(得分:0)
我通过在viewDidLoad中添加它来修复此问题:
@property (nonatomic, assign) CGPoint lastScroll;
- (void)viewDidLoad
{
[super viewDidLoad];
self.webView.scrollView.delegate = self;
self.lastScroll = CGPointMake(0, -64);
}
在这些方法中,我这样做:
- (void)scrollViewDidZoom:(UIScrollView *)scrollView
{
self.lastScroll = CGPointMake(self.webView.scrollView.contentOffset.x, self.webView.scrollView.contentOffset.y);
}
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
self.lastScroll = CGPointMake(self.webView.scrollView.contentOffset.x, -64);
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
self.lastScroll = CGPointMake(self.webView.scrollView.contentOffset.x, self.webView.scrollView.contentOffset.y);
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (decelerate != YES)
{
self.lastScroll = CGPointMake(self.webView.scrollView.contentOffset.x, self.webView.scrollView.contentOffset.y);
}
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if (navigationType == UIWebViewNavigationTypeLinkClicked || navigationType == UIWebViewNavigationTypeFormSubmitted)
{
self.lastScroll = CGPointMake(0, -64);
}
return YES;
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
self.navigationItem.title = [self.webView stringByEvaluatingJavaScriptFromString:@"document.title"];
[self.webView.scrollView setContentOffset:self.lastScroll];
}
答案 2 :(得分:0)
在UIWebView控制器中尝试此操作
self.automaticallyAdjustsScrollViewInsets = YES;
self.edgesForExtendedLayout = UIRectEdgeTop; // Added