滚动时自定义UIControl获取touchesCancelled;如何禁用滚动?

时间:2011-03-22 10:54:11

标签: iphone uikit uiscrollview uicontrol

我正在编写UISwitch替代品(带有自定义图形)。我已经覆盖了touchesMoved和朋友,因此您可以在“是”和“否”之间拖动窗口小部件,就像使用UISwitch一样。

如果您将其放在滚动视图中,如果用户将手指移动到对角线而不是完全水平位置,则会取消触摸,而滚动则会触发。我注意到UISwitch和UIButton没有表现出这种行为,并且在操作这些控件时滚动从不开始。

我如何告诉UIKit我想要对这些触摸进行独占控制,实际上禁用了touchesBegan中的滚动并启用了滚动结束/取消?我确信有一些显而易见的东西,但我查看了UIControl,UIResponder,UIView和UIScrollView的标题和文档,但没有找到任何内容。

注意:我不想创建UIScrollView子类;我无法想象,作为正确的解决方案,控制应该是完全独立的。

1 个答案:

答案 0 :(得分:4)

在滚动视图中设置canCancelContentTouches = NO,自定义控件中的exclusiveTouch = YES允许此行为,假设您乐意更改滚动视图上的属性。