iphone界面覆盖传递事件

时间:2009-07-22 18:19:13

标签: iphone uiview overlay clipping event-passthrough

alt text http://www.davidhomes.net/question.gif

我非常喜欢iphone开发(在我的空闲时间<3个月),我开始开发第二个应用程序。

从图像中,我在主UIViewController.view中添加了许多UIViews作为子视图,要添加的视图数量因用户可选择的数据而异。

每个视图都包含多个控件,一个标签,一个UITextField和一个Horizo​​ntal UIViewPicker。

为简单起见,我只用两个按钮放了一个(非常粗糙)的模型。

因为我想改进GUI,所以我希望将UIViewImage叠加为添加的UIView的顶级子视图,就像在图像中一样。

问题是将事件传递给它下面的对象。我在某处读过一种方法是使用剪裁,但实际的形状比仅仅是椭圆形框架更复杂。

在其他地方,我读到可以添加四个UIImages,每个边界一个,这会让事件通过这个洞。对我来说似乎是一个肮脏的解决方案(虽然我确信它会起作用)

有关最佳方法的任何想法?在线教学或食谱的任何链接?

感谢您的帮助

感谢 大卫

1 个答案:

答案 0 :(得分:1)

你看过协议吗?您可以为视图或对象定义协议,该对象的用户(例如下面的子视图)可以实现协议,将自身设置为委托对象,当操作发生时,它们将通过协议进行通知。例如,

AboveView将声明一个协议,当某个手势被该视图发送时,它会声明方法 - (无效)didMakeCircleGesture ... 作为一个属性,underneathview将有一个委托,所以在你的方法实际上看到你最终会有的姿势像

[delegate didMakeCircleGesture];

反过来,委托是下面的视图或者什么,它将符合AboveView定义的协议,作为其一部分,它必须声明方法didMakeCircleGesture,因此当一个人制作圆形手势时在AboveView中,符合协议的底层视图将被告知事件并且可以采取适当的行动