iOS / Obj-C UIScrollView 和 PageControl 不起作用

Posted

技术标签:

【中文标题】iOS / Obj-C UIScrollView 和 PageControl 不起作用【英文标题】:iOS /Obj-C UIScrollView and PageControl not working 【发布时间】:2013-01-16 01:01:21 【问题描述】:

我正在尝试按照本网站上的指南使用 UIPageControl 实现 UIScrollView: http://www.iosdevnotes.com/2011/03/uiscrollview-paging/ 与指南相反,我在情节提要项目中实现这一点,并使用 XCode4.5.2。除了指南中的代码,我在@interface的开头添加了,在实现的viewDidLoad方法里面,我添加了scrollView.delegate = self。

仅将指南中描述的代码和 IB 对象添加到我的应用程序中,当我在 iPhone 上测试它时,它根本不允许我滚动。我唯一能做的滚动是通过在 UIPageControl 上滑动手指,这会使 PageControl 中的“白点”向我滑动的方向移动一个点,并且 ScrollView 中没有可见的变化。在指南中,我们为 scrollView 中视图的背景添加了不同的颜色——这些颜色都没有出现。

我已尝试通过将 NSLogs 放入我的代码中来进行调试,以查看应用程序使用了哪些方法。添加一个 NSLog (@"View did load");就在 [super viewDidLoad] 之后;在主视图控制器顶部的 viewDidLoad 方法中不会向终端输出任何内容。这是否意味着我的应用无法正常加载?

提前致谢!

【问题讨论】:

【参考方案1】:

你有多个页面添加到滚动视图吗?如果您只有一页内容,则默认关闭滚动。确保调用 loadScrollView 方法并添加:

scrollView.pagingEnabled=YES;

【讨论】:

另外你是什么意思 viewDidLoad 不输出任何东西? ViewDidLoad 仅在您的应用程序第一次加载时被调用,如果它是您的主屏幕(除非您继续返回该屏幕而不是关闭)。每次都会调用 ViewWillAppear 和 viewDidAppear。 我已经勾选了在 IB 中启用分页。我所说的 viewDidLoad 不输出任何内容的意思是:我在该方法中放置了一个 NSLog @"View did load" 以查看它是否运行,但它从不运行——即使我启动应用程序时也不运行。 您确定在 Interface Builder 中设置了正确的类吗?听起来 IB 没有与您的代码挂钩。【参考方案2】:

如果你有兴趣,我创建了这个类来使用滚动视图进行分页

https://github.com/andrealufino/ALScrollViewPaging

【讨论】:

以上是关于iOS / Obj-C UIScrollView 和 PageControl 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何选择正确的视图来缩放视图中的多个 UIScrollView 对象(iPhoneSDK obj-C)?

如何检测UIScrollView何时完成滚动在Swift中

检查用户是不是允许本地通知。 iOS 8. Obj-C

使用 iOS/Obj-c 按类型搜索 Apple App Store

从 C++ 函数访问 Obj-C 属性 (iOS)

如何将 ios 中的 Elavon 与在 obj-c 中使用 Apple Pay 集成?