旋转 ipad 屏幕时同时调用滚动功能
Posted
技术标签:
【中文标题】旋转 ipad 屏幕时同时调用滚动功能【英文标题】:Scrolling function called simultaneously while rotating the ipad screen 【发布时间】:2012-05-10 18:09:19 【问题描述】:我正在创建一个包含 8 页的 UIscroll 视图。每个页面都是另一个视图控制器类,具有添加到此滚动视图的一些功能。
在加载应用程序时,当我将屏幕从一页滚动到另一页时,应用程序运行良好。 但是当我将 ipad 旋转到不同的界面方向时,会调用 UIScrollView 委托方法 - ScrollViewDidScroll,并且当前屏幕(页面)会滚动到上一个屏幕。调试让我认为滚动功能是与设备旋转同时调用的。
如何停止/防止在旋转时调用“ScrollViewDidScroll”委托方法,以便仅执行旋转功能(即不应将屏幕移至上一个)?
我尝试了提供的不同解决方案,但几乎没有帮助
我是 xcode 开发的新手。
【问题讨论】:
@JacquesCousteau 谢谢,我会注意的。 @zombie007 你有什么解决办法吗?我面临同样的问题.. @neeraj 经过大量探索以找到(体面的)解决方案后,我想出了一个解决方法——我创建了一个全局变量来维护页码。当滚动方法完成执行(旋转后)时,我设置了滚动视图偏移量 w.r.t 所需页面的偏移量。这个页码是从我的全局变量中获得的。 @zombie007 其实我找到了更好的解决方案。在setContentOffset:
方法中,ios其实是在改变scrollView的bounds
属性的来源。所以我刚刚为 UIScrollView 添加了一个类别,其中一个名为 customSetContentOffset:
的方法会将 scrollView.bounds
的原点设置为所需的内容偏移量。这不会进行任何回调,当然还会更改内容偏移量。
@neeraj 您的解决方案听起来不错,虽然我自己没有尝试过。这是您解决问题的方法吗 P.S:请原谅我迟到的回复,因为我不是该网站的常客。
【参考方案1】:
除了使用scrollViewDidScroll
方法来设置当前页面,你可以使用scrollViewDidEndDecelerating
方法,它不会在轮播时调用。
这样,您只需在旋转后根据当前页面设置正确的contentOffset
。
【讨论】:
事实上,我实际上是在 ScrollViewDidEndDecelerating 方法本身中设置我的全局变量。所以它奏效了。无论如何谢谢:)以上是关于旋转 ipad 屏幕时同时调用滚动功能的主要内容,如果未能解决你的问题,请参考以下文章