1

コードにリンクされている多くの UIButtons がありますが、メソッドをボタンに接続せずにすべての UIbutton に対して機能し、各ボタンが押されたときにサウンドを再生するメソッドが必要でした。一般的なUIボタンが押されたことを検出する方法はありますか? コードにリンクされていなくても?

4

1 に答える 1

4

私のコメントで述べたように、1 つのオプションはサブクラス化によるものUIButtonです。のサブクラスを作成してUIButtonそのメソッドを実装しinit、押されたときにサウンドを再生するアクションを追加できます。これは通常のボタン アクションと似ていますが、ターゲットはこのカスタム サブクラスになります。

- (id)initWithFrame:(CGRect)frame {
    if (self=[super initWithFrame:frame]) {
        [self addTarget:self action:@selector(playSound) forControlEvents:UIControlEventTouchUpInside];
    }
    return self;
}

- (void)playSound {
  //play sound
}

次に、ボタンを次のように使用します。

CustomButton *aButton = [[CustomButton alloc] initWithFrame:aFrame];

xib またはストーリーボードを使用している場合は、ボタン オブジェクトのクラスを からUIButtonに変更できますCustomButton

于 2013-01-13T19:54:20.517 に答える