setContentOffset:animated:如果动画= NO,不会做任何事情

时间:2012-07-30 22:48:14

标签: ios ipad uiscrollview

我正在尝试滚动到正在webView中查看的PDF的最后查看位置。卸载PDF时,它将保存webView的scrollView的y偏移量。然后当PDF重新打开时,我想跳到他们离开的地方。

当动画设置为YES时,下面的代码工作正常,但是当它设置为NO时,没有任何反应

    float scrollPos = [[settingsData objectForKey:kSettingsScrollPosition]floatValue];
    NSLog(@"scrolling to %f",scrollPos);
    [webView.scrollView setContentOffset:CGPointMake(0, scrollPos) animated:NO];
    NSLog(@"ContentOffset:%@",NSStringFromCGPoint(webView.scrollView.contentOffset));

此输出:

滚动到5432.000000

CO:{0,5432}

然而PDF仍然显示首页

我在这里查看了类似问题的答案,但他们没有解决这个问题。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

contentOffset组件完成PDF渲染之前,您无法触摸UIWebView。它适用于setContentOffset: animated:YES,因为动画会强制渲染。

如果在渲染开始后将contentOffset设置为至少0.3秒(来自我的测试),则完全没有问题。

例如,如果您在viewDidLoad的{​​{1}}中加载PDF,则可以在UIViewController中使用performSelector:withObject:afterDelay:来延迟viewDidAppear:设置。

要在设置contentOffset之前隐藏PDF,可以将其alpha设置为0.01(除非渲染无法启动,否则不要将其设置为0)并在设置{{1}后将其设置为1 }。

contentOffset