2012-02-22 4 views
0

私のコード:ボタンのタッチダウンイベントとCPBPressureTouchGestureRecognizer

-(void)viewDidLoad { 
[super viewDidLoad]; 

CPBPressureTouchGestureRecognizer* recognizer = [[CPBPressureTouchGestureRecognizer alloc] initWithTarget:self action:@selector(A_button:)]; 
[A_button addGestureRecognizer: recognizer]; 
[recognizer release]; 


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

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

- (void) A_button: (CPBPressureTouchGestureRecognizer*) recognizer { 
[self.presLabel setText:[NSString stringWithFormat:@"%f",recognizer.pressure]]; 
} 

し、最終的に

-(IBAction)touchUp :(id)sender{ 
[myTimer invalidate]; 
myTimer = nil; 
NSLog(@"up"); 
} 

-(IBAction)touchDown :(id)sender{ 

myTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 
              target:self 
             selector:@selector(A_button:) 
             userInfo:nil 
              repeats:YES]; 


} 

が、タイマセレクタで、私は@selector(A_button)をwhrite場合は何もしない、動作しない、と私の場合@selector(A_button :)を返すエラー:

2012-02-22 22:38:24.837 TestPres[19686:707] -[__NSCFTimer pressure]: unrecognized selector sent to instance 0x143570 2012-02-22 22:38:24.847 TestPres[19686:707] * Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFTimer pressure]: unrecognized selector sent to instance 0x143570'

問題はどこですか?私がタッチダウンmボタンを押すと、どのように圧力値を0.1秒表示することができますか?

おかげ

答えて

0

はあなたのA_button:メソッドは、引数として渡されるCPBPressureTouchGestureRecognizerを期待しています。あなたのタイマーが起動すると、そのメソッドが呼び出されますが、代わりにNSTimerオブジェクトが渡されます。

また、圧力ジェスチャ認識器の動作方法は、タップジェスチャ認識器の動作とよく似ています。たとえそれを参照しても、適用される圧力を継続的に監視するわけではありません。それは、タップが認識されたときの圧力に近似するだけである。

+0

また、ジェスチャ認識機能とUIControlEventを混在させると、ややこしいことに注意してください。あなたはどうやって互いにやりとりしたり、葛藤したりするのか、本当に考える必要があります。 – picciano

+0

おかげさまで、私はUIButtonを押し続けても、どのように圧力データを連続的に(0.1秒ごとに)見ることができますか? – AleMal

+0

私はそれを行う方法を見つけていません。あなたが使用している圧力ジェスチャ認識装置は、加速度計に依存しています。ボタンを一定に保持しても、圧力を感知するのに必要な動きは生じない。 – picciano

関連する問題