У меня есть приложение с вкладками, на одной из вкладок у меня есть MKMapView.В этом представлении my viewDidLoad я инициализирую распознаватель жестов длинным нажатием для кнопки UIB.Когда эта кнопка нажата и помогает, она представляет 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];
}