iOS Отключить касание через MKAnnotation

У меня есть собственный MKAnnotation и соответствующий MKAnnotationView. Когда вы нажимаете на одну из аннотаций, я открываю настраиваемую выноску, которая на самом деле является просто еще одним MKAnnotation и MKAnnotationView, чтобы отобразить настраиваемую «выноску» (хотя на самом деле это еще одна аннотация). Эта вторая подробная аннотация занимает много места, и это нормально.

Я пытаюсь отключить нажатие на эту аннотацию "выноска". На нем есть несколько кнопок, которые отлично реагируют при нажатии, но если вы немного промахнетесь, вы либо закроете эту аннотацию (нажимает на аннотацию и на карту, которая отменяет выбор аннотации), либо выберите другую аннотацию позади нее.

Как я могу сохранить все изменения в этой аннотации, чтобы остаться в этой аннотации? Я хочу, чтобы, если вы коснетесь где-нибудь в этой аннотации, прикосновение получит только эта аннотация. Если вы коснетесь где-нибудь еще, карта отреагирует нормально (закрытие выбранной аннотации, выбор другой аннотации и т. Д.).

Редактировать 1: я попытался добавить фоновое изображение с альфа-каналом 0,1, но оно все равно проходит. Мой код в MKAnnotationView:

UIView *backgroundView = [[UIView alloc] initWithFrame:self.frame];
[backgroundView setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.1]];
[backgroundView setUserInteractionEnabled:YES];

[self addSubview:backgroundView];

К сожалению, это все еще затрагивает

Изменить 2: мне удалось немного исправить проблему, но осталась одна серьезная проблема. Вместо того, чтобы использовать UIView в качестве основного типа представления, я использую UIButton, который дает мне такую ​​же возможность добавлять вложенные представления, как мне нравится. Затем я устанавливаю в качестве цели фиктивный селектор для всей кнопки (поэтому прикосновение к фону запускает фиктивный селектор). Это отлично работает при захвате касания, за одним исключением.

Мне еще предстоит выяснить, какой именно части касаются, но иногда прикосновение все равно будет проходить через кнопку, только если за кнопкой, к которой я прикоснулся, есть еще одна аннотация. Но это случается не каждый раз, а лишь иногда.

Кто-нибудь знает, почему это могло произойти?


person shiznatix    schedule 28.11.2013    source источник
comment
Вы нашли для этого решение? У меня точно такая же проблема.   -  person Rodrigo Ruiz    schedule 10.03.2014


Ответы (1)


Вы можете добавить прозрачный вид на заднем плане пользовательского вида выноски, чтобы ограничить касания при просмотре карты.

person Vinay Jain    schedule 28.11.2013
comment
Просто попробовал, но, увы, ничего не вышло. Прикосновения все еще проходят. Код, который я использовал, находится в моем исходном редактировании - person shiznatix; 28.11.2013