自定义手势不发送动作消息

时间:2013-05-22 01:13:43

标签: objective-c uigesturerecognizer

我创建了一个名为UIGestureRecognizer的{​​{1}}子类来模拟长按手势。 (是的,我知道已经存在的具体子类,我只是在学习Objective-c并尝试一下。)

我只覆盖了以下方法:

LongPressGestureRecognizer

并在我的视图控制器中使用属性- (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:,我知道就状态而言,手势识别器正在按预期工作...

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

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

相关问题