【发布时间】:2012-05-11 10:23:13
【问题描述】:
注意:这不是性能问题!我知道 UITableView 中单元格出列的好处。
为了测试,我创建了一个 UIScrollView,其中包含一些简单的不透明 UIView 子视图,这些子视图在白色滚动视图上具有黑色背景色,它们之间的间距为 100 点,因此可以滚动。重量很轻。没有其他的。真的相信我,它并不重。
我注意到开始滚动滚动视图和开始滚动表格视图之间存在巨大差异。
当我触摸滚动视图并立即开始拖动时,它滞后了大约 0.25 秒,然后突然赶上了。从那里开始它是流畅的,在我再次触地之前不再滞后。
在更大、更复杂的 UITableView 上,当我做同样的事情时,在它开始滚动之前没有 0.25 秒的初始延迟。
我尝试更改所有可能的属性,但无法消除这种愚蠢的延迟。我相信它与滚动视图有关,想要确定触摸是否打算在子视图上发生,然后查看用户是否移动它的手指太多。然后它开始滚动。
现在疯狂的是 UITableView 本身就是一个 UIScrollView,我想让我的 UIScrollView 开始像 UITableView 一样快地滚动。怎么样?
编辑:嘘..我发现了一些疯狂的东西!
NSLog(@"GR = %@", self.gestureRecognizers);
GR = (
"<UIScrollViewDelayedTouchesBeganGestureRecognizer: 0x13e930;
state = Possible;
delaysTouchesBegan = YES;
view = <TestScrollView 0x13e380>;
target= <(action=delayed:, target=<TestScrollView 0x13e380>)>>",
"<UIScrollViewPanGestureRecognizer: 0x13ee00;
state = Possible;
delaysTouchesEnded = NO;
view = <TestScrollView 0x13e380>;
target= <(action=handlePan:, target=<TestScrollView 0x13e380>)>>"
)
这是 iOS 4,iOS4 中没有 panGestureRecognizer 属性。最可疑的是 UIScrollViewDelayedTouchesBeganGestureRecognizer 和 delaysTouchesBegan。该死! 如何在 iOS4 中将其设置为 NO?
【问题讨论】:
标签: ios uitableview uiscrollview