Я разрабатываю приложение, где пользователь локализуется через gps, и затем его спрашивают, находится ли он в определенном месте. Чтобы подтвердить это, пузырь вызова выдается ему сразу, спрашивая его, находится ли он в определенном месте.
Так как есть много подобных вопросов, я смог сделать настраиваемый пузырь вызова:
Моя проблема: кнопка не является "кликабельна"
Мое предположение: потому что эта настраиваемая выноска выше, чем стандартный пузырь вызова, мне пришлось поместить его в отрицательный "кадр", поэтому кнопка не может быть нажата. Вот мой метод didSelectAnnotationView
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
if(![view.annotation isKindOfClass:[MKUserLocation class]]) {
CalloutView *calloutView = (CalloutView *)[[[NSBundle mainBundle] loadNibNamed:@"callOutView" owner:self options:nil] objectAtIndex:0];
CGRect calloutViewFrame = calloutView.frame;
calloutViewFrame.origin = CGPointMake(-calloutViewFrame.size.width/2 + 15, -calloutViewFrame.size.height);
calloutView.frame = calloutViewFrame;
[calloutView.calloutLabel setText:[(MyLocation*)[view annotation] title]];
[calloutView.btnYes addTarget:self
action:@selector(checkin)
forControlEvents:UIControlEventTouchUpInside];
calloutView.userInteractionEnabled = YES;
view.userInteractionEnabled = YES;
[view addSubview:calloutView];
}
}
CalloutView - это просто класс с двумя свойствами (метка, которая показывает название места и кнопки) и с xib.
Я делаю этот настраиваемый пузырь вызова в течение нескольких дней. Я попытался использовать "решения asynchrony" решение, но я не смог добавить кнопку другого типа, а затем кнопку раскрытия.
Моя следующая попытка заключалась в том, чтобы найти то, что было проще, чем асинхронные решения, и изменить его для моего использования. Вот как я нашел настраиваемую выноску tochi.
Основываясь на его работе, я смог настроить свой пузырь и изменить информационную кнопку для моей пользовательской кнопки. Моя проблема, однако, осталась прежней. Чтобы разместить мой пользовательский вид выноски поверх булавки, мне пришлось отдать его отрицательному кадру, поэтому моя кнопка была "кликабельна" только в нижних 5 пикселях. Кажется, что я должен, возможно, копать глубже в пузырь, вызываемый по умолчанию ios, подклассировать его и изменить рамку выноски там. Но сейчас я действительно безнадежен.
Если вы, ребята, могли бы показать мне правильный путь или дать мне совет, я буду рад.