У меня есть приложение с вкладками, на одной из вкладок у меня есть MKMapView. В этом представлении мой viewDidLoad я инициализирую распознаватель жестов длительного нажатия для UIButton. Когда эта кнопка нажата и справка представляет UIActionSheet с 5 кнопками + кнопка отмены. Каждая кнопка представляет уровень масштабирования: «Мир», «Страна», «Штат», «Город», «Текущее местоположение». Выбор кнопки в UIActionSheet увеличивает базовый MKMapView до этого уровня.
Проблема, с которой я сталкиваюсь, заключается в том, что все кнопки (включая кнопку отмены) требуют двойного нажатия, чтобы закрыть UIActionSheet. Это не предполагаемое поведение — оно должно закрываться после однократного нажатия кнопки, как и любой другой UIActionSheet. После первого нажатия я вижу, как карта масштабируется до соответствующего уровня за UIActionSheet, поэтому я знаю, что прикосновение регистрируется на правильной кнопке, но кнопка не выделяется синим цветом при первом нажатии, и UIActionSheet не закрывается. Пока я не нажму кнопку во второй раз, она подсветится синим цветом, а затем исчезнет.
Если я удалю распознаватель жестов длительного нажатия и представлю UIActionSheet для «подкраски внутри», тогда все будет работать так, как должно. Итак, я знаю, что жест как-то мешает, есть идеи по исправлению или обходному пути? Или это ошибка, о которой следует сообщить в Apple?
- (void) viewDidLoad {
// intitialize longpress gesture
UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(zoomOptions:)];
longPressRecognizer.minimumPressDuration = 0.5;
longPressRecognizer.numberOfTouchesRequired = 1;
[self.currentLocationButton addGestureRecognizer:longPressRecognizer];
}
- (IBAction) zoomOptions:(UIGestureRecognizer *)sender {
NSString *title = @"Zoom to:";
UIActionSheet *zoomOptionsSheet = [[UIActionSheet alloc] initWithTitle:title delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"World", @"Country", @"State", @"City", @"Current Location", nil];
[zoomOptionsSheet showFromTabBar:appDelegate.tabbarController.tabBar];
}