0

ボタン名「button1」があり、以下のようにセレクターを指定しました

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

特定のコードの実行が完了した後。このメソッド「buttonPressedMethod:」をプレイに関与させないようにしたい。

別のセレクター メソッドを割り当てたい。いう

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

私が今得ているのはです。

両方のメソッドが呼び出されます。一度に呼び出されるメソッドは 1 つだけです。セレクターメソッドをキャンセルするための提案をいくつか教えてください。

4

4 に答える 4

2

新しいターゲットを追加する前に、最初のターゲットを削除します。

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

シンプルにやってみてください。メソッドを作成し、ボタン1にターゲットを追加してから、条件付きチェックを実行して、次のような別のメソッドを呼び出します

-(void)button1Clicked:(id)sender{

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

         else { [self laterMethod];}

}
于 2012-08-31T08:03:24.283 に答える
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 に答える
-1

ブール値フラグを 1 つ維持します。最初のセレクターを呼び出したい場合:

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

その後、必要な場所でフラグを false にします。

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