2013-05-22 31 views
0

我创建了一个UIGestureRecognizer子类,称为LongPressGestureRecognizer模拟长按手势。 (是的,我知道已经存在,我只是学习Objective-C和试验了一下具体子类)。自定义手势不发送动作消息

我也只覆盖了以下方法:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    self.state = UIGestureRecognizerStatePossible; 
    [self performSelector:@selector(setState:) withObject:[NSNumber numberWithInt:UIGestureRecognizerStateRecognized] afterDelay:2]; 
} 

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [NSObject cancelPreviousPerformRequestsWithTarget:self]; 
    self.state = UIGestureRecognizerStateCancelled; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [NSObject cancelPreviousPerformRequestsWithTarget:self]; 
    self.state = UIGestureRecognizerStateFailed; 
} 

在我看来,控制器属性recognizer存储手势识别器,我有以下代码:

- (LongPressGestureRecognizer *)recognizer 
{ 
    if (!_recognizer) { 
     _recognizer = [[LongPressGestureRecognizer alloc] init]; 
    } 
    return _recognizer; 
} 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.recognizer addTarget:self action:@selector(log:)]; 

    [self.view addGestureRecognizer:self.recognizer]; 
} 

- (IBAction)log:(LongPressGestureRecognizer *)recognizer 
{ 
    //blah blah blah 
} 

我的问题是log:是没有得到所谓的在所有...通过在控制台登录的UIGestureRecogniserState S,我知道手势识别器正在工作,只要状态而言预计...

我在做什么错在这里?

回答

0

也可能有其他问题,但我可以告诉你,你的电话不会像你希望的那样工作;你会最终传递的指针NSNumber对象,而不是一个int的,所以state将被设置为某种垃圾的价值。创建一个方法,将执行self.state = UIGestureRecognizerStateRecognized并调用它。

+0

感谢的人......工作完美:) – Roshan