contentOffset 问题
Posted
技术标签:
【中文标题】contentOffset 问题【英文标题】:Issue with contentOffset 【发布时间】:2011-05-31 16:29:03 【问题描述】:现在我正在开发一个使用自定义 splitView 的应用程序,它有一个 PDFTableController
代表 rootViewController 和 popover 表,我有一个 AffirmaPDFViewController
代表 detailViewController。
界面的设置方式是有一个scrollView,并且在scrollView中有三个WebView,它们加载要查看的PDF。这些 WebView 的宽度为 1024 像素,并排放置以允许滑动。
当我从表中选择一个项目时,我会返回所选项目和行号,因为我需要通过表示行号的乘数来更改滚动视图的原点。我的代码如下所示:
start = ((i) * 1024);
NSLog(@"%d", start);
scrollView.contentOffset = CGPointMake(webView1.frame.origin.x + start, webView1.frame.origin.y);
i
是由PDFTableController
提供的行号。 start
变量带有适当的值(0、1024、2048 等)并且滚动视图移动。但是,它不会更改正在显示的 webView。有谁知道这是为什么?
为了设置我使用 IB 的 webViews,但是在发生旋转时我更改了一些属性:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
if(fromInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || fromInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
counter = 0;
webView1.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
webView2.frame = CGRectMake(768, 0, self.view.frame.size.width, self.view.frame.size.height);
webView3.frame = CGRectMake(1536, 0, self.view.frame.size.width, self.view.frame.size.height);
isLandscape = NO;
else
counter = 0;
webView1.frame = CGRectMake(0, 0, 1024, 724);
webView2.frame = CGRectMake(1024, 0, 1024, 724);
webView3.frame = CGRectMake(2048, 0, 1024, 724);
isLandscape = YES;
[webView1 reload];
[webView2 reload];
[webView3 reload];
[________ reload];
调用是因为 webViews 加载 PDF 和旋转的问题,我知道有点牵强,但这是我能找到的唯一解决方法
我正在通过以下方式将内容加载到 webViews:
- (void)viewDidLoad
pdfURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"affirma" ofType:@"pdf"]];
[webView1 loadRequest:[NSURLRequest requestWithURL:pdfURL]];
pdfURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"recursion" ofType:@"pdf"]];
[webView2 loadRequest:[NSURLRequest requestWithURL:pdfURL]];
pdfURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"review" ofType:@"pdf"]];
[webView3 loadRequest:[NSURLRequest requestWithURL:pdfURL]];
2011-05-31 10:38:16.465 AffirmaPDF[1927:207] 1.17666e-40, 3.4481e-36, 1.35492e-41, -1.99922
2011-05-31 10:38:16.467 AffirmaPDF[1927:207] 2.98701e-41, 1.35492e-41, 0, -1.99921
2011-05-31 10:38:16.468 AffirmaPDF[1927:207] 2.19627e-37, 3.4481e-36, 3.48195e-41, 3.4481e-36
2011-05-31 10:38:16.469 AffirmaPDF[1927:207] 2.19615e-37, 2.55515e-39, 2.19615e-37, -1.99921
2011-05-31 10:38:16.470 AffirmaPDF[1927:207] 0, 0
2011-05-31 10:38:16.470 AffirmaPDF[1927:207] 0, 0
【问题讨论】:
您能展示一下您是如何设置网络视图的吗? 我只是把 webViews 的代码,用这个代码,在旋转 ipad 时调整大小正常工作。 webViews 都是 scrollView 的孩子 是同一个网页视图还是同一个内容?如果是内容,你是如何加载它们的? 我只是编写了将内容加载到 webViews 上的代码 【参考方案1】:根据垃圾值,滚动视图和 Web 视图似乎没有添加到视图层次结构中,或者它们没有通过插座连接。
【讨论】:
所有网点都连接在IB中。我有两个 .xib 文件。 MainWindow 和 AffirmaPDFViewController.xib。我是否需要向 MainWindow.xib 添加一个视图并让该视图加载 AffirmaPDFViewController? 您在哪个方法中执行第一段代码?最后的输出没有意义。 在- (void)setDetailItem:(id)newDetailItem
方法中
可以贴出相关部分的接口文件吗?
但是您是否将scrollView
属性连接到笔尖中的UIScrollView
对象?以上是关于contentOffset 问题的主要内容,如果未能解决你的问题,请参考以下文章
为啥 UIScrollView 会自动改变 contentOffset?
dismissModalViewControllerAnimated 重置 contentOffset
UITableView 中 UIScrollView 中的 ContentOffset 问题
有没有我可以为 UIScrollview.contentOffset 截取的“willSet”和“didSet”?