2

在我的应用程序UIButtons中,我有多个要添加目标。

事实证明,最近添加的目标首先执行,然后是其余目标。

例如,使用以下代码:

[button addTarget:self action:@selector(someAction:) forControlEvents:UIControlEventTouchUpInside];

[button addTarget:self action:@selector(someOtherAction:) forControlEvents:UIControlEventTouchUpInside];

如果我会在里面补上buttonsomeOtherAction:会被叫过someAction

那不是我想要的。我想对目标进行排序,以便我可以在该按钮内部进行修饰,首先称为someAction:能力,然后是其他操作someOtherAction:

我不确定从哪里开始,我应该继承并覆盖其中的某些东西UIButton还是深入挖掘UIControl

谢谢您的帮助!

-大卫

4

2 回答 2

1

最简单(尽管很老套)的方法是复制所有动作选择器,将它们从目标中删除,然后重新添加所有动作选择器,除了您希望首先发生的那个。

但是,您的要求可能是糟糕的设计决策的副作用,因为这不是必要的行为。

你先做某事的最终目标是什么?

为什么不能将这两种操作合二为一,以正确的顺序执行选择器?

于 2012-01-12T00:44:25.963 回答
0

您可以提供一个中介或代理对象,它始终接收按钮的操作,然后将适当的对象从它包含的数组转发到最终目的地。

一种可能的方法是覆盖代理对象的 -forwardInvocation: 和 -methodSignatureForSelector: 方法。请参阅http://developer.apple.com/library/mac/#samplecode/ForwardInvocation/Introduction/Intro.html

于 2012-01-13T15:11:17.333 回答