Итак, я относительно новичок в Objective-C, и есть определенная вероятность того, что я упускаю что-то довольно очевидное, так что не стесняйтесь бросать в меня помидоры, если это так. Вот моя проблема:
У меня есть приложение для iPhone с одним представлением, состоящее из одного файла MapView
. Я включил распознаватель жестов длительного нажатия на этот MapView
, чтобы аннотировать/отбрасывать булавку. Похоже, это сработает, если я не укажу minimumPressDuration
...
- (void)viewWillAppear:(BOOL)animated {
UILongPressGestureRecognizer * longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];
[mapView addGestureRecognizer:longPressRecognizer]; // Actual map view handler is added to
...
}
-(void) handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer {
NSLog (@"Did it work?!");
// Some code here to make pins appear; omitted for simplicity in this question
}
Как и ожидалось, когда я долго нажимаю на карту, через 0.5
секунд (время по умолчанию) у меня будет 1 булавка на карте. Если я двигаюсь вокруг пальца, у меня куча булавок. Журнал также распечатывает "Это сработало?!" много раз снова и снова. Опять ожидаемо. Однако, когда я добавляю одну строчку в метод viewWillappear (прямо перед отправкой сообщения addGestureRecognizer
в mapView):
longPressRecognizer.minimumPressDuration = 1.0;
...жест больше не работает. В том, что я держу пресс в течение 1 секунды, и в журнале ничего не появляется. Отпусти, попробуй дольше одной секунды... ничего. Никакие булавки не сбрасываются, и ничего не распечатывается в журнале. Почему это происходит? Я не могу понять, почему установка минимальной продолжительности может нарушить это. Я ожидаю, что это должно работать так же, как и раньше — без настраиваемой минимальной продолжительности нажатия — с той лишь разницей, что мне нужно удерживать 1 полную секунду вместо половины одной.
Обновление: похоже, что если я выберу значения между 0.1
и 0.5
включительно, это сработает. Но как только я перехожу к 0.6
или больше, это не работает. Что-то происходит под капотом в Obj-C, о чем я не знаю?
Кроме того, я знаю, что должен проверять состояние в моей функции-обработчике, так что, если это не решит эту проблему, не наваливайте на меня за это. Я просто хочу, чтобы сначала работали голые кости, прежде чем углубляться в детали.
Спасибо!
PS, используя OS X 10.8.2 и Xcode 4.5.1 (4G1004).