按钮touchDown事件和CPBPressureTouchGestureRecognizer

时间:2012-02-22 21:45:30

标签: iphone xcode uibutton selector pressure

我的代码:

-(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秒?

由于

1 个答案:

答案 0 :(得分:0)

您的A_button:方法期望将CPBPressureTouchGestureRecognizer作为参数传入。当您的计时器触发时,它会调用该方法,但会传递NSTimer对象。

此外,压力手势识别器的工作方式与轻敲手势识别器的方式非常相似。即使您保留了它的参考,它也不会持续监控施加的压力。只有在识别出水龙头时它才会接近压力。

相关问题