Я пробовал много разных способов, но не могу найти, что не так с моим кодом, надеюсь, вы мне поможете!
Я делаю собственный пузырь выноски, который будет отображаться при нажатии на булавку на карте, чтобы показать некоторые изображения внутри пузыря, и мне нужна кнопка detaildisclosure, чтобы пользователь мог щелкнуть и получить доступ к дополнительной информации. Моя проблема в том, что пузырь и кнопка отображаются, но нажатие на кнопку не вызывает метод выбора.
// РЕДАКТИРОВАТЬ: извините, потому что в первый раз, когда я добавляю слишком много кода, я буду редактировать, пытаясь быть более конкретным, спасибо за ваши ответы
В методе:
- (id) initWithAnnotation:(id)annotation reuseIdentifier:(NSString *)reuseIdentifier
Сначала я показываю изображение, чтобы изменить пользовательский значок вместо обычного пина
self = [super initWithAnnotation:myAnnotation reuseIdentifier:reuseIdentifier];
self.frame = CGRectMake(0, 0, kWidth, kHeight);
self.backgroundColor = [UIColor clearColor];
imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon.png"]];
imageView.frame = CGRectMake(kBorder, kBorder, kWidth - 2 * kBorder, kWidth - 2 * kBorder);
[self addSubview:imageView];
Я добавляю его как подпредставление, и в то же время, чтобы настроить выноску пузыря, я создаю несколько меток и изображений и добавляю в представление calloutView, которое сначала скрыто, пока метод выбора вывода не будет вызван
calloutView = [[UIView alloc] initWithFrame:CGRectMake(10, 30, restNameLbl.frame.size.width + 30, 60)];
calloutView.hidden = YES;
После этого я создаю прямоугольник с закругленными углами и размер для текста, я пропускаю эту часть кода, потому что я не думаю, что это сейчас важно, дайте мне знать, если я это сделаю, я использую некоторые графические функции для имитации по умолчанию iphone bubble map sytle
И я добавляю все созданные ранее элементы в calloutView:
[calloutView addSubview:backgroundRect];
[calloutView addSubview:restNameLbl];
[calloutView addSubview:likeImg];
[calloutView addSubview:likesLbl];
[calloutView addSubview:noLikeImg];
[calloutView addSubview:noLikesLbl];
А потом я помещаю этот вид в нужное место
//position callout above pin
calloutView.frame = CGRectMake(-25, -calloutView.frame.size.height-10, calloutView.frame.size.width + 50, calloutView.frame.size.height);
[self addSubview:calloutView];
И в том же пузырьковом представлении - называемом calloutView. Я хочу показать кнопку подробного раскрытия, чтобы пользователь мог получить доступ к дополнительной информации, но если я добавлю ее непосредственно в calloutView, события селектора никогда не инициируются. Поэтому я попытался сделать это по-другому, добавив кнопку в родительское представление, изменив скрытое состояние на «да» и показав его в методе выбора
accessory = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
[accessory setTitle:myAnnotation.idRest forState:UIControlStateNormal];
accessory.hidden= YES;
// ПРИМЕЧАНИЕ: здесь проблема в том, что если я опускаю эту строку кадра, все работает идеально или если я установил origin.x и origin.y равными 0,0, но когда я изменил это число, чтобы показать его в правильном месте просмотра перестает работать селектор кнопок
accessory.frame = CGRectMake(110, calloutView.frame.origin.y+25, accessory.frame.size.width, accessory.frame.size.height);
Затем я добавляю событие селектора к вызываемому при щелчке, и, как я уже сказал, функция calloutAccessoryTap вызывается только в том случае, если в рамке аксессуара не указано, или если origin.x и y оба установлены в 0
accessory.userInteractionEnabled = YES;
[accessory addTarget:self action:@selector(calloutAccessoryTap) forControlEvents: UIControlEventTouchUpInside | UIControlEventTouchCancel];
И в последний раз я добавил кнопку в основной вид
[self addSubview:accessory];
Таким образом, вначале вид - это просто значок, вид выноски с метками и изображениями скрыт, то же самое происходит с кнопкой детализации, и когда выбран пин-код, и необходимо отобразить всплывающую подсказку и кнопку вызова. показаны. Все видно прямо на экране, но когда рамка аксессуара установлена в правильное положение, отличное от начала координат x и y 0,0, селектор перестает работать.
Надеюсь, вы сможете мне помочь, потому что я пробовал много разных вещей, но ни одна из них не работает.