在组件完成 PDF 的呈现contentOffset
之前,您不能触摸。UIWebView
它之所以有效,是setContentOffset: animated:YES
因为动画强制渲染。
如果contentOffset
在渲染开始后设置为至少 0.3s(根据我的测试),则完全没有问题。
例如,如果您在您的文件中加载 PDF,viewDidLoad
您UIViewController
可以performSelector:withObject:afterDelay:
在viewDidAppear:
延迟contentOffset
设置中使用。
要在设置之前隐藏 PDF contentOffset
,您可以将其 alpha 设置为 0.01(除非渲染不会开始,否则不要将其设置为 0)并在设置后将其设置回 1 contentOffset
。
@interface ViewController : UIViewController
{
UIWebView *w;
}
@property (nonatomic, retain) IBOutlet UIWebView *w;
@end
@implementation ViewController
@synthesize w;
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *u = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"pdf"];
[w loadRequest:[NSURLRequest requestWithURL:u]];
w.alpha = 0.01f;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self performSelector:@selector(adjust) withObject:nil afterDelay:0.5f];
}
- (void)adjust
{
float scrollPos = 800;
NSLog(@"scrolling to %f",scrollPos);
[w.scrollView setContentOffset:CGPointMake(0, scrollPos) animated:NO];
NSLog(@"ContentOffset:%@", NSStringFromCGPoint(w.scrollView.contentOffset));
w.alpha = 1;
}
@end