2011-08-15 6 views
0

からメソッドをサブクラス化しています。コール私はXcodeの4</p> <p>とiPhoneのiOS 4のためのプロジェクトに取り組んでUIButtonのサブクラス@implementation

これは、UIButtonサブクラスの@implementationの最後の部分です。タップが「記録される」2つのインスタンスメソッドです。

- (void) handleTap: (UITapGestureRecognizer *) sender { 
    NSLog(@"single tap"); 
} 

- (void) handleDoubleTap :(UITapGestureRecognizer *) sender { 
    NSLog(@"double tap"); 
} 

ボタンインスタンスがnibで作成され、すべて正常に動作します。これは、シングルタップを傍受してダブルタップしてNSLogを出力します。

質問:私はViewControllerに2つのメソッド(resetAllFieldsとpopulateAllFields)を持っています。その1回のタップでresetAllFieldsを実行し、populateAllFieldsをダブルタップする必要があります。

どうすればいいですか?どこに電話をかけますか?

ありがとうございます。

答えて

2

ViewControllerでビヘイビアを処理する場合は、カスタムボタンクラスにdoubleとdoubleタップを処理するメソッドを定義する@protocolを追加します。あなたのCustomButton.hで

すなわち

@protocol CustomButtonDelegate <NSObject> 
    - (void)button:(CustomButton *)button tappedWithCount:(int)count; 
@end 

次に、あなたのカスタムボタンのクラスでは、このプロトコルを実装して、タップが検出されたときにデリゲートにこれらのメソッドを呼び出すデリゲートを持っています。実装で、あなたの方法であなたのCustomButton.h

id <CustomButtonDelegate> _delegate; 

すなわち:

- (void) handleTap: (UITapGestureRecognizer *) sender { 
    NSLog(@"single tap"); 
    [self.delegate button:self tappedWithCount:1]; 
} 

- (void) handleDoubleTap :(UITapGestureRecognizer *) sender { 
    NSLog(@"double tap"); 
    [self.delegate button:self tappedWithCount:2]; 
} 

あなたのビューコントローラプロトコルのメソッドを実装し、カスタムボタンのデリゲートとしての地位を設定しますより。

ie。あなたのViewControllers実装

- (void)button:(CustomButton *)button tappedWithCount:(int)count { 
    if (count == 1) { 
     [self resetAllFields]; 
    } else if (count == 2) { 
     [self populateAllFields]; 
    } 
} 

にあなたがそこにかのviewDidLoadで代理人としてあなたのビューコントローラを割り当てることができますカスタムボタンを設定するには、Interface Builderのを使用しているので。

+0

ありがとうございます。私は初心者なので、代議員についてもっと説明が必要です。どうすればそれらを作成できますか? – boscarol

+0

編集した回答がさらに詳しい情報を追加します – MarkPowell

+0

あなたの完全な回答が表示されます。ありがとうございました。 – boscarol

関連する問題