iPhone SDK视图滚动不是橡皮筋或使用刷卡动力

问题描述:

我在滚动工作时遇到一个根本性问题通常在我的iPhone应用上使用。我有两个视图,每个视图都是在IB中创建的(尽管我已经通过编程方式尝试了这一点,但没有任何区别),这些视图非常滑动地滚动。而不是我们习惯的滚动(这是光滑的,并继续滚动,最终衰减和顶部/底部的橡皮筋),只要我的手指与视图接触,我的滚动就会滚动。快速向下滑动视图效果比缓慢滑动效果更好。当您滚动到顶部或底部之外时,视图会停留在上方/下方空白区域滚动。iPhone SDK视图滚动不是橡皮筋或使用刷卡动力

我的一个观点是UITableView,另一个是UIScrollView。两者都有完全相同的问题,在不同的XIB中,加上不同的类,所以这就是为什么我认为我总体上缺少一个关键概念。

我的UITableView是一个UIView的子项(因为顶部还有一个导航栏),UIViewController的视图连接到了UIView。引用数据源数据源和委托都被挂钩到UITableView。这里除了ViewController之外没有任何东西被覆盖,它覆盖了填充表格。

在第二个实例中,我再次拥有一个UIViewController的视图连接到的非子类UIView。我有一个子类UIScrollView作为UIView的子元素,然后将一个子类UIView(比滚动视图的尺寸更大)作为子类UIScrollView的子元素。这本身对我来说似乎非常复杂,但我根本无法使用少于3个视图进行滚动工作(同样在非子类UI视图顶部有一个导航栏)。我正在重写drawRect:在我的UIScrollView中,除了这个滚动问题外,它将内容放到了正确的位置。

我在组织上做错了什么吗?我遇到过很多关于*和UIScrollView的其他站点的建议,但都没有什么不同。而且我没有看到有人用UITableView滚动问题。我没有粘贴任何代码,因为我现在不得不在这个时候发布完整的课程(使得这个帖子可笑地很长),我相信这些问题真的与我使用IB的方式一样。

谢谢!

OK,事实证明,这已经无关的UIKit。此代码是我使用cocos2d开发的游戏的一部分,并且该框架是导致该问题的原因。对于那些在cocos2d上开发的人,你不能使用FastDirector,并期望滚动在UIViews中工作。只要删除任何代码,如[[Director sharedDirector] useFastDirector],一切都会好起来的。

+0

3年后......这帮了我很多。你有没有找到其他的解决方法?我正在使用快速导演进行更准确的触摸事件。你可以切换导演类型吗? – Arbel 2012-05-10 11:56:13

+0

我尝试了所有不同的导演,这些导演是在1.0版Cocos发布之前加入的。我不记得哪个表现更好,并且不得不拉起代码才能看到我坚持的东西,但他们绝对都是从FastDirector开始工作。您应该尝试一下,因为根据您的应用程序,不同的导演可能会为您效果更好。 – iisystems 2012-07-20 16:22:52

某些代码可能有助于缩小您的问题范围。

同时,尝试使用“基于导航的应用程序”模板在Xcode中创建一个新项目,并查看在MainWindow.xib中如何创建导航控制器。看看如何定义名为'RootViewController'的UITableViewController子类以及如何设置相应的xib。你会注意到在任何地方都没有明确定义UIScrollView,但你可以从tableview控制器'免费'获得滚动功能。

这应该给你一个很好的起点,正确的道路。我质疑需要重写drawRect:没有看到一些代码或完全理解你的目标。

在看看: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIScrollView_Class/Reference/UIScrollView.html http://developer.apple.com/iPhone/library/featuredarticles/ViewControllerPGforiPhoneOS/UsingNavigationControllers/UsingNavigationControllers.html