1

すべてのボタンがノートを再生するピアノのようなアプリを作成しています。私の UIButtons は Touch Down イベントでサウンドを再生します。問題は、あるボタンから別のボタンに指をスワイプするときに発生します (ピアノのキーに対して指をスワイプしてその間のすべての音符をキャプチャすることを想像してください)。指を離さない限り、別のボタンに触れることなく最初のボタンを「保持」します。

指を離さずに複数のタッチダウン イベントをキャプチャするにはどうすればよいでしょうか?

4

3 に答える 3

1

次のように、ボタンに追加のターゲットを追加できます。

myButton addTarget:self 
             action:@selector(yourMethodHere:withEvent: )
   forControlEvents:UIControlEventTouchDragInside];

使用できるイベントの種類のリストを次に示します。

enum {
   UIControlEventTouchDown           = 1 <<  0,
   UIControlEventTouchDownRepeat     = 1 <<  1,
   UIControlEventTouchDragInside     = 1 <<  2,
   UIControlEventTouchDragOutside    = 1 <<  3,
   UIControlEventTouchDragEnter      = 1 <<  4,
   UIControlEventTouchDragExit       = 1 <<  5,
   UIControlEventTouchUpInside       = 1 <<  6,
   UIControlEventTouchUpOutside      = 1 <<  7,
   UIControlEventTouchCancel         = 1 <<  8,

   UIControlEventValueChanged        = 1 << 12,

   UIControlEventEditingDidBegin     = 1 << 16,
   UIControlEventEditingChanged      = 1 << 17,
   UIControlEventEditingDidEnd       = 1 << 18,
   UIControlEventEditingDidEndOnExit = 1 << 19,

   UIControlEventAllTouchEvents      = 0x00000FFF,
   UIControlEventAllEditingEvents    = 0x000F0000,
   UIControlEventApplicationReserved = 0x0F000000,
   UIControlEventSystemReserved      = 0xF0000000,
   UIControlEventAllEvents           = 0xFFFFFFFF
};

次に、次のような関数を作成できます。

-(void) yourMethodHere:(UIControl *) button withEvent:(UIEvent *)event {
    //do whatever
}
于 2013-06-08T04:40:50.823 に答える
0

ボタンだけでタッチイベントを処理するだけでは、目的を達成できないと思います。UIPanGestureRecognizerユーザーのスワイプ指を処理するために使用することをお勧めします。また、どのボタンがスワイプされたかを確認し、対応する音楽を再生できます。

于 2013-06-08T04:34:50.277 に答える
0

ジェスチャ認識エンジンに関するこのチュートリアルは、かなり役立ちます: http://www.raywenderlich.com/6567/uigesturerecognizer-tutorial-in-ios-5-pinches-pans-and-more

于 2013-06-08T04:37:09.453 に答える