В коде нет ничего плохого. Я бы, вероятно, просто определил свойство coordinate
для вашего AddressAnnotation
и давал компилятору синтез соответствующего сеттера и избавиться от настраиваемого сеттера, хотя это, вероятно, не связано с проблемой, которую вы описываете ... Это просто проще сделать так, что аннотация-х coordinate
будет соответствовать КВО и т.д.
я мог бы предположить, что вы определяете ваш контроллер представления, чтобы быть делегатом вида карты, а затем реализовать regionDidChangeAnimated
:
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
NSLog(@"%s %f, %f %d", __FUNCTION__, mapView.region.center.latitude, mapView.region.center.longitude, animated);
}
Это может быть полезно знать что делает region
, и, может быть, вы можете перепроектировать то, что происходит.
Но, в сущности, проблема не связана с кодом, который вы включили в свой вопрос, и проблема, несомненно, лежит в другом месте.
Делая это в проекте, я увидел следующий журнал:
2013-03-30 23:11:12.326 iBo[25408:c07] -[POIMapController mapView:regionDidChangeAnimated:] -47.422141, 0.000000 0
2013-03-30 23:11:12.328 iBo[25408:c07] -[POIMapController mapView:regionDidChangeAnimated:] 44.508473, 11.375828 0
2013-03-30 23:11:12.328 iBo[25408:c07] -[POIMapController mapView:regionDidChangeAnimated:] -47.422141, 0.000000 0
2013-03-30 23:11:12.329 iBo[25408:c07] -[POIMapController mapView:regionDidChangeAnimated:] -47.422141, 0.000000 0
Таким образом, очевидно, ваша установка область имеет место, но есть что-то другое, что сбрасывает область после того, как это происходит , Немного поиграв, я обнаружил, что это поведение проявляется только при использовании автоматического макета. Если вы отключите автоматическую компоновку, это поведение исчезнет, и оно работает так, как вы ожидали.
В качестве альтернативы, я заметил, что если вы переместили свой код, чтобы установить регион из viewDidLoad
(что довольно рано в процессе создания представления (после создания представления, но до его появления) и поместите его в viewDidAppear
, он работает
ничего полезного ... NSLog return "2013-03-25 18: 46: 55.938 Hackathlon [23887: c07] - [MappeController viewDidLoad] nan, nan " запись строки в режиме viewdidload, простой, при первом открытии, масштабирование карты в никуда! –
@ Matte.Car Это неудовлетворительно. Я уверен, что ваш оператор журнала предлагает, чтобы вы ввели этот оператор журнала в 'viewDidLoad', и я предлагал вам добавить это в 'regionDidChangeAnimated'. Тем не менее проблема не сохраняется в списке кодов в вашем вопросе. Если бы вы могли загрузить код где-нибудь, я был бы рад взглянуть. Но небольшой фрагмент в вашем вопросе в порядке. (Я тестировал его в своем собственном проекте, и он работал нормально.) – Rob
Я только что обнаружил очень странную вещь: в моем приложении карта появляется после некоторых табличных представлений, и у нее есть эта проблема, начиная приложение прямо с этого экрана, это работает правильно! –