Я пытаюсь добавить UITapGestureRecognizer в свое приложение, чтобы я мог обнаруживать и реагировать на все два касания пальца, но передавать любой другой пользовательский ввод. Звучит тривиально, но я просто не могу заставить его работать. Вот мой код внутри моего контроллера основного представления:
- (void) viewDidLoad {
// other init stuff
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[tapRecognizer setNumberOfTouchesRequired:2];
[tapRecognizer setNumberOfTapsRequired:1];
[tapRecognizer setCancelsTouchesInView:NO];
UIView *tapHolderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[tapHolderView setMultipleTouchEnabled:YES];
[tapHolderView addGestureRecognizer:tapRecognizer];
[self.view addSubview:tapHolderView];
[tapRecognizer release];
}
- (void) handleTap:(UITapGestureRecognizer *) sender {
if (sender.state == UIGestureRecognizerStateEnded) {
// do something
}
}
Происходит следующее: нажатие двумя пальцами вызывает метод handleTap. Любой другой пользовательский ввод, будь то смахивание, сжатие, касание одним пальцем и т. д., не будет воспринят каким-либо другим представлением (среди прочего, UIToolbar, UIWebView).
Я был бы очень признателен за любое понимание этого, и, пожалуйста, дайте мне знать, если я недостаточно конкретизировал проблему.