我的代码:
-(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)什么也不做,如果我写@selector(A_button :)返回错误:
2012-02-22 22:38:24.837 TestPres [19686:707] - [__ NSCFTimer压力]:无法识别的选择器发送到实例0x143570 2012-02-22 22:38:24.847 TestPres [19686:707] * 由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:' - [__ NSCFTimer压力]:无法识别的选择器发送到实例0x143570'
问题出在哪里?当我触摸m按钮时,如何显示压力值甚至0.1秒?
由于
答案 0 :(得分:0)
您的A_button:
方法期望将CPBPressureTouchGestureRecognizer
作为参数传入。当您的计时器触发时,它会调用该方法,但会传递NSTimer
对象。
此外,压力手势识别器的工作方式与轻敲手势识别器的方式非常相似。即使您保留了它的参考,它也不会持续监控施加的压力。只有在识别出水龙头时它才会接近压力。