Поскольку у меня есть более одного элемента для отображения в определенном месте в mapview, я бы хотел отобразить WEPopoverController в MKMapView, когда выбран данный MKPinAnnotationView.iOS: WEPopoverController в MKMapView
Представление содержания, которое является табличным обзором, прекрасно работает до сих пор. Я подклассифицировал MKPinAnnotationView, и когда щелкнули аннотацию, я вызываю свой собственный метод представления.
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
[view openCustomPopoverInFrame:self.view.frame];
[mapView deselectAnnotation:view.annotation animated:NO];
if (_lastAnnotationView != view) {
[_lastAnnotationView closeCustomPopover];
_lastAnnotationView = view;
}
}
- (void) openCustomPopoverInFrame:(CGRect) frame {
CGRect fromFrame = self.frame; //Pin Annotation View Frame
WEPopoverContentViewController *contentViewController = [[WEPopoverContentViewController alloc] initWithStyle:UITableViewStylePlain];
contentViewController.delegate = self;
WEPopoverController *viewController = [[WEPopoverController alloc] initWithContentViewController:contentViewController];
//[viewController setPassthroughViews:[NSArray arrayWithObjects:contentViewController.view, contentViewController.tableView, nil]];
viewController.delegate = self;
//set the displayed content
....
_myPopoverController = [viewController retain];
[viewController presentPopoverFromRect:fromFrame inView:self.superview permittedArrowDirections:UIPopoverArrowDirectionUp | UIPopoverArrowDirectionDown animated:YES];
[contentViewController release];
[viewController release];
}
Кроме кнопок выбора в Tableview клетки работают находку и я получить ожидаемый ответ (метод вызывается, и popovercontroller остается на вершине иерархии вида).
Моя проблема заключается в том, что когда я нажимаю на содержимое WEPopoverController (одна из ячейки таблицы просмотра, в центре, где не находится ни одной кнопки), событие перехода проходит через представление карты и, следовательно, скрывает контроллер popover , Что я могу сделать, чтобы предотвратить пройденные события крана?
Я попробовал несколько решений, например. установить passThroughViews, а также манипулировать методом hitTest: withEvent: в WETouchableView и всегда возвращать нуль, но это также не помогает мне дальше.
Лучшие Nic
EDIT
Я теперь отладил Трассировка: withEvent: метод в WETouchableView немного больше в отдел, и кажется, что она всегда возвращает экземпляр UITableViewCellContentView, который, я думаю, должен быть правильным до сих пор.
EDIT
Так, чтобы быть немного более ясными, я хочу, чтобы отобразить контроллер поповера и когда он получает похлопали он должен neighter исчезнуть, как это обычное поведение аннотации, ни основной вид должен вызываться , Он должен оставаться на вершине представления, и событие перехода должно попасть в представление таблицы и вызвать конкретный метод (tableView: didSelectRowAtIndexpath :).
Я также рассмотрел решение this, но, похоже, оно не работает для меня, и открывается основной вид (который является видом карты).