0

我有一个按钮名称“button1”,我为它提供了一个选择器,如下所示

[button1 addTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside];

现在在我执行完某些代码之后。我希望这个方法“buttonPressedMethod:”不再参与到游戏中。

我想分配一个不同的选择器方法。说

[button1 addTarget:self action:@selector(dummymethod:) forControlEvents:UIControlEventTouchUpInside];

我现在得到的是。

这两种方法都被调用。我希望一次只调用一种方法。请给出一些取消选择器方法的建议。

4

4 回答 4

2

在添加新目标之前删除您的第一个目标:

[button1 removeTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside];
于 2012-08-31T07:09:14.110 回答
0

有一个变量来跟踪按钮的当前操作。

SEL currentAction;

// assign action to button using this
currentAction = @selector (newAction:);
[button1 addTarget: self action: currentAction forControlEvents: UIControlEventTouchUpInside];

// remove previous action action before assigning new one
if (currentAction)
{
    [button1 removeTarget: self action: currentAction forControlEvents: UIControlEventTouchUpInside];
}
// and then reassign action like explained above
于 2012-08-31T10:06:23.130 回答
0

简单试试吧。创建一个方法并将目标添加到 button1 然后进行条件检查以调用另一个方法,例如

-(void)button1Clicked:(id)sender{

         if(check_your_Condition==true) { [self previousMethod];}

         else { [self laterMethod];}

}
于 2012-08-31T08:03:24.283 回答
-1

保持一个布尔标志。当您想调用第一个选择器时:

if(flag==True)
{
[button1 addTarget:self action:@selector(buttonPressedMethod:) forControlEvents:UIControlEventTouchUpInside];
}

之后,在你想要的地方设置标志为假。

if(flag==false)
{
[button1 addTarget:self action:@selector(dummymethod:) forControlEvents:UIControlEventTouchUpInside];
}
于 2012-08-31T07:11:48.200 回答