В одном из моих контроллеров представления у меня есть несколько представлений, содержащих UITapGestureRecognizer, а также реализацию touchesBegan
. Мне нужно расставить приоритеты над клавишами touchesBegan
, поэтому я устанавливаю свойство delaysTouchesBegan
распознавателей жестов на YES
. Это работает правильно, но есть одна проблема: распознаватель жестов слишком долго задерживает touchesBegan
. Согласно documentation:
Когда значение свойства равно YES, окно приостанавливает доставку сенсорных объектов на фазе UITouchPhaseBegan к представлению. Если распознаватель жеста впоследствии распознает его жест, эти сенсорные объекты отбрасываются. Если распознаватель жестов, однако, не распознает его жест, окно передает эти объекты в представление в сообщении touchsBegan: withEvent: message (и, возможно, последующие сообщенияMoved: withEvent: message, чтобы информировать его о текущих местоположениях).
В основном проблема заключается в том, что, когда распознаватель жестов не распознает жест и доставляет эти объекты до touchesBegan
, эта операция занимает слишком много времени. Есть ли способ ускорить его, или это просто, что обработка жеста, чтобы определить, является ли это краном интенсивным и невозможно сократить?
Edit:
Вот еще информация. Это код, который я использую для настройки распознавателя жестов:
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
tapRecognizer.cancelsTouchesInView = NO;
tapRecognizer.delaysTouchesBegan = YES;
tapRecognizer.delegate = self;
tapRecognizer.numberOfTapsRequired = 1;
tapRecognizer.numberOfTouchesRequired = 1;
[self.someView addGestureRecognizer:tapRecognizer];