2011-11-13 6 views
1

イベントをトリガーするためにUIBarButtonItemを使用しています。私はxcode4で統合されたInterfaceBuiderを使用してUIBarButtonItemを作成し、そのボタンをビューコントローラのメソッドに接続しました。この方法は、次のようになります。UIBarButtonItemのtouchesended touchesbeganを検出する方法は?

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

    /* now perform action */ 
} 

今、私はアプリのMIDIシンセの種類のイベントの種類noteoff/noteonをトリガーにしたいので、また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 

それからインターフェース・エディタが、運にmyUIBarButtonItemするUIBarButtonItemのクラスを変更しました。それは私のカスタマイズされたクラスをインターフェイスエディタで使用する正しい方法ですか?

3 UIBarButtonItemがUIResponderから継承しないため、どこからでもtouchesbegan/touchesendedイベントを傍受することはできません。その場合、タッチを検出してイベントに触れることができる適切な方法は何ですか?私は主にC/C++プログラマであり、私の知識は客観的なCとiphoneの環境についてはかなり制限されています。私はUIエディタの使い方しか知らず、カスタムUIをどのように作成し、このエディタを使用せずに使用するのか分かりません。

ボトムラインは:可能な限りの遅延でタッチダウン/タッチアップを検出する最も簡単な方法は何ですか?

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

おかげで、あなたはこのようにそれを行うことができます

答えて

-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 { 
} 
+0

おかげでマイケルは、これは私が必要とする正確に何のように見えます。しかし、1つは、IBで作成されたので、 'button 'にアクセスする方法がわかりません。 – Baba

+0

私はこのように私のviewcontroller.hでIBOutletを宣言しようとしました:IBOutlet UIBarButtonItem * myButton; IBのコード行にリンクしてから、viewdidloadの[myButton addTarget ....]を呼び出しますが、次のようなランタイムエラーが表示されます。 - [UIBarButtonItem addTarget:action:forControlEvents:]:インスタンス ***キャッチされていない例外 'NSInvalidArgumentException'のためアプリを終了します、理由: ' - [UIBarButtonItem addTarget:action:forControlEvents:]:インスタンスに送信された認識できないセレクタ ***最初の呼び出し時のコールスタック: 何がありますか?ありがとう – Baba

+5

addTarget:action:forControlEvents:はUIControlで宣言され、UIBarButtonItemはUIControlから継承しないためです。 – NJones

関連する問題