1

イベントをトリガーするためにUIBarButtonItemを使用しています。xcode4に統合されたInterfaceBuiderを使用してUIBarButtonItemを作成してから、ボタンをViewControllerのメソッドに接続しました。メソッドは次のようになります。

-(IBAction)NoteOnOff:(id)sender
{
    UIButton *button = (UIButton*)sender;

   /* now perform action */
}

ここで、MIDIシンセサイザーの種類のアプリに対してnoteon / noteoffタイプのイベントをトリガーしたいので、fingerdown/fingerupも検出したいと思います。

1-sender上記の方法で押し下げられたか押し上げられたかを検出する方法はありますか?

2- UIBarButtonItemをサブクラス化して、touchesBeganとtouchesEndedを次のように実装しようとしました。

@interface myUIBarButtonItem : UIBarButtonItem {

}

@end

@implementation myUIBarButtonItem

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesBegan");
NSLog(@"touches=%@,event=%@",touches,event);
}

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesEnded");
NSLog(@"touches=%@,event=%@",touches,event);
}

@end

次に、インターフェイスエディターでUIBarButtonItemのクラスをmyUIBarButtonItemに変更しましたが、うまくいきませんでした。これは、インターフェイスエディタでカスタマイズしたクラスを使用する正しい方法ですか?

3- UIBarButtonItemがUIResponderから継承しないため、touchesbegan/touchesendedイベントをインターセプトできないことをどこかで読みました。その場合、タッチダウンおよびタッチアップイベントを検出できる適切な方法は何ですか?私は主にC/C ++プログラマーであり、ObjectiveCとiPhone環境についての知識はかなり限られています。私はUIエディターの使用方法しか知らず、カスタムUIを作成して、このエディターなしで使用する方法もまだわかりません。

結論は次のとおりです。可能な限り遅延を最小限に抑えてタッチダウン/タッチアップを検出する最も簡単な方法は何ですか?

チュートリアルやドキュメントへのポインタも歓迎します。

ありがとう、

馬場

4

1 に答える 1

-2

次のように実行できます(UIBarButtonItemをサブクラス化する必要はありません)。

[button addTarget:self action:@selector(touchUp:)
  forControlEvents:UIControlEventTouchUpInside];

[button addTarget:self action:@selector(touchDown:)
  forControlEvents:UIControlEventTouchDown];

- (void) touchUp:(id)sender {
}

- (void) touchDown:(id)sender {
}
于 2011-11-13T22:23:49.110 に答える