我的UIScrollView(包含一些UIControls)在iOS 8中不再滚动

时间:2014-09-21 10:35:45

标签: ios iphone uiview uiscrollview touches

在我的应用程序中,我制作了一个日历,基本上包含一个UIScrollView,每天包含一些单元格(自定义UIControl),顶部标题包含一些标签(Mon,Tue,Wed ...),显然还有一些分隔符(厚度为1px的UIView。

在iOS 7上一切正常,我可以通过按下它们来选择单元格(我使用UIControlEventTouchUpInside事件来选择它们),并拖动分页滚动视图以显示上个月或下个月。

但是,由于我已经切换到iOS 8,并下载了Xcode 6,它已经不再适用了。 实际上我仍然可以选择单元格,但是滚动视图不会滚动(除非我从标题或分隔符拖动它,这是基本的UIView,没有任何触摸事件管理)。

我开始从一个单元格中拖动滚动视图,它只是保持固定。

我没有改变任何事情,所以我不明白为什么它不再起作用......

请帮帮我!! :)

非常感谢

PS:我是法国人,抱歉我的英语不好

1 个答案:

答案 0 :(得分:4)

编辑:在iOS 8.1中,行为似乎与iOS 8.0之前的行为类似,因此Apple可能会修复'它。因此,不再需要以下答案了。


据我所知,iOS 8发生了变化,影响了UIScrollview的处理。在UIControl的情况下,UIScrollView不再跟踪内容触摸。

我做的一件事是继承UIScrollView并覆盖touchesShouldCancelInContentView

- (BOOL) touchesShouldCancelInContentView:(UIView *)view {
    return YES;
}

另见https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScrollView_Class/index.html

  

返回值:YES取消进一步触摸要查看的消息,NO取消   视图继续接收这些消息。默认返回值是   如果view不是UIControl对象,则为YES;否则,它返回NO。