iOS 7的问题和滚动通过包含UIButtons的UIScrollView
我一直负责更新我们没有写的应用程序。 它包含一个水平滚动的滚动视图,只包含UIButtons。 button不仅有一个动作来打开他们代表的应用程序,但他们可以拖动,如果轻拍和举行。 在所讨论的滚动视图下面还有另一个滚动视图,它接受拖动button。
在iOS 7之前,所有东西都已经按照预期工作。在iOS 7设备上,一旦触摸了滚动视图,button轻敲就会被注册。 该button将显示一个点亮的状态,像它被选中,滚动视图将开始滚动。 在iOS 7以前的设备上,滚动视图将开始滚动而不是注册水龙头。
任何人在使用iOS7时遇到任何UIScrollView问题? setDelaysContentTouches:设置为YES,这应该防止这种情况发生。 我不知所措
我遇到了同样的问题。 我将一些button粘贴到水平滚动的UIScrollView
中。 然后我用自动布局来布置这些button。 尝试使用-setDelaysContentTouches:YES
和-setExclusiveTouch:YES
,甚至在button上尝试-setUserInteractionEnabled:NO
,没有任何工作。 滚动视图不会滚动,只有button有触摸事件。
原来是这个问题的是使用自动布局。 我不完全确定为什么,但禁用之后,使用spring-n-structs放置button后,滚动视图按预期工作。 滚动视图将滚动,如果我刚刚点击接收的button触摸。
所以也许尝试不使用button上的自动布局?
最大的问题之一是button也可以拖动。 他们可以拖动和重新sorting在自己的滚动视图,或移动到另一个滚动视图。 我们最终做的是对滚动视图中使用的button进行子类化。 这个小类跟踪了原来的button所有者是谁,并且覆盖了touchesBegan:
, touchesMoved:
和touchesCancelled:
当触摸被我们的button子类识别时,它将确定button是否被拖动并调用适当的方法。 然后,我们先调用我们的触摸方法,然后再调用[self nextResponder]
。
这是公司代码,所以我不能直接发帖而不问。 如果我没有问题,我会用实际的代码更新我的答案。