1

2 つの異なるコントロール イベントに対する 2 つのアクションを持つ UIButton を取得しました:UIControlEventTouchDownUIControlEventTouchUpInside.

UIControlEventTouchUpInsideによってトリガーされたアクションがUIControlEventTouchDownこれが必要であることを検出した場合、にバインドされたアクションを「ブロック」することは可能ですか?

-action に属するコードを変更することはできません。これはUIControlEventTouchUpInsideプライベート フレームワークの一部であるためです。そのため、自分自身を助ける別の方法を見つける必要があります …</p>

4

2 に答える 2

1

イベントをブールUIControlEventTouchUpInside変数 (if ステートメント内) に依存させます。ただし、次のことが通知されます

UIControlEventTouchDown によってトリガーされるアクションは、これが必要であることを検出します

この通知を使用して変数を設定します。

于 2012-08-02T13:51:50.177 に答える
1

UIControlEventTouchDownトリガーしないイベントのアクションUIControlEvenTouchUpInsideでは、ボタンのそのイベントに別の (おそらく空の) アクションを設定するか、単にそのアクションを削除することができます。セレクタ参照を保持するか、通常はトリガーする必要がある他のアクションのメソッド名を知っているだけで、トリガーする場合はリセットします。

if ( buttonUsedDownAction )
{
    [button removeTarget:(self?) action:@selector(yourPrivateFunction) forControlEvents:UIControlEventTouchUpInside];
}
else
{
    if ( [button actionsForTarget:(self?) forControlEvent:UIControlEventTouchUpInside].length == 0 )
    {
        [button addTarget:(self?) action:@selector(yourPrivateFunction) forControlEvents:UIControlEventTouchUpInside];
    }
}

自分が(self?)Touch up inside アクションの受信者であるかどうかわからないため、ターゲットに設定しましたが、アイデアを得る必要があります

于 2012-08-02T14:26:32.240 に答える