如何将UIEvent传输到下面的UIResponders

时间:2010-11-26 21:34:39

标签: iphone objective-c events uibutton touch

我有很多小UIButtons和一个覆盖它们的大型UIButtons。 小UIControlEventTouchDownRepeat应该对UIButton作出反应并调用选择器。大UIButton只需要对UIControlEventTouchDragInside作出反应。然而,大UIControlEventTouchDownRepeat会消耗所有触摸,{{1}}事件无法到达下方的小按钮。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

如果大UIButton覆盖小按钮而不是简短回答,则不能。事件在响应者链中向上传递,当涉及到视图时,除非事件被处理,否则事件将传递到其超级视图。由于视图只能有一个超级视图,因此无法实现您想要做的事情,至少不容易。

如果您可以反转布局,将大按钮顶部的所有小按钮都可以正常工作。我不确定事件是否会按照您的意愿行事,您只需要测试它。但是,所有未通过小按钮处理的事件都应传递给大按钮。

如果您可以捕捉UIControlEventTouchDownRepeat触及的点,那么您应该能够找到触摸屏下方的哪个小按钮并以此方式传递事件。您必须向超级视图询问小按钮,这些小按钮可能与大按钮的超级视图相同,用于触摸坐标处的视图以及对该视图执行某些操作。

您可能希望研究另一种解决方案,也许可以创建一个自定义控件来处理您想要的触摸。