長押しジェスチャをシミュレートするためにUIGestureRecognizer
呼び出されるサブクラスを作成しました。LongPressGestureRecognizer
(はい、すでに存在する具体的なサブクラスについては知っています。目的の 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を記録することにより、状態に関する限り、ジェスチャ認識機能が期待どおりに機能していることがわかります...
ここで何が間違っていますか?