iOS5:UIScrollView显示和滚动与iOS4不同

iOS5:UIScrollView显示和滚动与iOS4不同,ios,xcode,cocoa-touch,uiview,ios5,Ios,Xcode,Cocoa Touch,Uiview,Ios5,这是一个奇怪的问题 我有一个IBMOutlet UIScrollViewplayScrollView,它的高度正好是contentSize高度的1/3。该应用程序是在景观。我把这个代码叫做 [playScrollView scrollRectToVisible:CGRectMake(0.0f, page * PLAY_VIEW_PAGE_HEIGHT, 480.0, PLAY_VIEW_PAGE_HEIG

这是一个奇怪的问题

我有一个IBMOutlet UIScrollView
playScrollView
,它的高度正好是contentSize高度的1/3。该应用程序是在景观。我把这个代码叫做

[playScrollView scrollRectToVisible:CGRectMake(0.0f, page * PLAY_VIEW_PAGE_HEIGHT,
                                              480.0, PLAY_VIEW_PAGE_HEIGHT)
                           animated:animated];
。。。(int
页面
范围从0到2)从
页面
1开始(显示中间三分之一),然后在用户按下按钮时根据需要向上或向下移动

这在iOS4设备和模拟器上都可以正常工作,并且已经在应用商店上运行了几个月,没有出现任何问题。即使iOS5设备与现有版本配合良好,但只有在为iOS5重新编译应用程序时,它才停止在iOS5设备上正常工作

由于更新到XCode 4.2,这不适用于iOS5。它的
页面
太低,当它应该显示中间页面时,显示底部页面。通过将
页面
更改为
(第1页)
,我可以让代码为iOS5(设备和模拟器)工作

[playScrollView scrollRectToVisible:CGRectMake(0.0f, (page-1) * PLAY_VIEW_PAGE_HEIGHT,
                                              480.0, PLAY_VIEW_PAGE_HEIGHT)
                           animated:animated];
…但这当然破坏了iOS4,它可以在旧代码中正常工作,但在新代码中被卡住了一个
page
太高。iOS4和iOS5完全是
PLAY\u VIEW\u PAGE\u HEIGHT
不同步的(288像素,是
playsrollview
高度的三分之一)。如果改用
setContentOffset:
,也会发生同样的情况

还有一件奇怪的事,可能是这件事的关键。如果我根本不做scrollRectToVisible,那么iOS4位于PlaySollView的顶部,而iOS5显示中间的第三个(即PLAY\u VIEW\u PAGE\u HEIGHT pixels down)

我可以检测到iOS并为每个iOS使用不同的代码,但这是一个可怕的乱码。如果这是一个iOS5错误,并且他们在未来的版本中修复了它,那么这将破坏live应用程序


有没有人有过类似的想法或注意到类似的事情?谢谢。

您的
UIScrollView
真的是其
contentSize
高度的3倍吗,还是相反?我希望
contentSize
总是>=
UIScrollView
bounds.size
.Oops,正好可以在凌晨1点发布。谢谢,会解决的。是的,iOS 5有很多这样的问题。我必须到处做
响应选择器:
,才能使代码同时适用于iOS 4和iOS 5。你申请雷达了吗?你可能会发现它已经被标记了,还有一个解决办法。我尽了最大努力重新创建了你的配置,我的示例应用程序在iOS 4和iOS 5上运行得很好。要么我在你如何配置东西的过程中遗漏了什么,要么你有一个从上面的描述中不明显的问题。