【发布时间】:2011-07-20 09:22:40
【问题描述】:
我正在编写 UISwitch 替换(带有自定义图形)。我已经覆盖了 touchesMoved 和朋友,因此您可以在 Yes 和 No 之间拖动小部件,就像 UISwitch 一样。
如果您将其放置在滚动视图中,如果用户将手指沿对角线而不是完全水平移动最微小的一点,则触摸将被取消,并开始滚动。我注意到 UISwitch 和 UIButton 没有表现出这种行为,并且在操作这些控件时滚动永远不会启动。
我如何告诉 UIKit 我想要对这些触摸进行独占控制,实际上是在 touchesBegan 中禁用滚动并在结束/取消时启用滚动?我确信有一些明显的东西,但我查看了 UIControl、UIResponder、UIView 和 UIScrollView 的标题和文档,但没有找到任何东西。
注意:我不想创建 UIScrollView 子类;我无法想象作为正确的解决方案,控件应该是完全独立的。
【问题讨论】:
-
我假设在你的 UIScrollView 上设置 scrollEnabled = NO 在 touch down 和 touch up 之间不是一个选项吗?
-
@jnic:没错,我没有引用控件子类中的滚动视图。一个可怕的丑陋解决方案是迭代超级视图,直到我找到最近的滚动视图并禁用它,但我试图在这里找到一个漂亮的解决方案。
标签: iphone uikit uiscrollview uicontrol