MKMapView внутри UIScrollView не перемещается с проведением - PullRequest
2 голосов
/ 01 октября 2010

У меня есть подробный вид с различными ярлыками и информацией о месте (адрес, телефон и т. Д.). Предоставленная информация выше, чем экран iPhone, поэтому все они имеют вид UIScrollView (сам внутри UIView), который позволяет перемещаться вверх и вниз, чтобы увидеть все.

У меня также есть MKMapView внутри прокрутки. Когда он не привязан ни к чему в Интерфейсном Разработчике, он перемещается вверх и вниз с просмотром прокрутки, как и должно, оставаясь в правильном относительном положении с другими элементами управления в просмотре прокрутки. Вы можете играть с картой, масштабировать и панорамировать ее и т. Д., И по умолчанию отображается ваше текущее местоположение.

Однако, как только я подключаю его к переменной MKMapView в IB, представление карты больше не прокручивается вместе с просмотром прокрутки. Вместо этого он буквально просто находится в положении, в котором он первоначально отображался (в нижней части вида, при этом немного карты скрыто под нижней частью вида), а прокрутка прокручивается вверх и вниз за ним.

Что здесь происходит? Я пытался изменить кучу свойств mapview и scrollview в IB, но это не имеет никакого эффекта. Единственное, что я не пробовал, это просто создание карты полностью в коде, но это не кажется очевидным решением.

РЕДАКТИРОВАТЬ: Извините всех о истекшем вознаграждении. Я застрял в других областях проекта и не мог вернуться сюда до сих пор. Я не знал, что это истечет.

ДОПОЛНИТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: Ну, я понял свою проблему. По совершенно неизвестным мне причинам у меня было

[self.view addSubview:mapView];  

в ViewDidLoad viewcontoller. Как только она будет подключена, эта строка кода (очевидно) сделает карту подпредставлением моей точки зрения, фактически вытянув ее из вида прокрутки.

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

Ответы [ 4 ]

0 голосов
/ 07 декабря 2010

Я разобрался в своей проблеме.По совершенно неизвестным мне причинам у меня было

[self.view addSubview:mapView];  

в ViewDidLoad viewcontoller.Как только она будет подключена, эта строка кода (очевидно) сделает карту подпредставлением моего взгляда, фактически вытянув ее из вида прокрутки.

0 голосов
/ 21 октября 2010

Если вы используете ScrollView, вам нужно использовать функцию прокрутки в DetailView.

Вместо использования ScrollView у меня была альтернатива этому ...

Вы можете испытать свою удачу, используя TableView вместо ScrollView.

Просто возьмите все метки и mapView в одном представлении, а затем поместите это представление в заголовок TableView.

как это:

UITableView

-> Просмотр

------> Все метки // Внутри singleView

------> MKMApView // Внизу представления

Тем не менее Вы можете играть с картой, масштабировать и панорамировать ее и т. Д., И она покажет ваше текущее местоположение по умолчанию.

Надеюсь, эта альтернатива может решить вашу проблему .......

Всего наилучшего

0 голосов
/ 26 октября 2010

Если подключение к выходу в IB нарушает работающее в противном случае представление, вы можете попробовать это, чтобы найти представление во время выполнения:

- (UIView *) findClass:(Class) aClass inView:(UIView *) aSuperview {
    for ( UIView *view in aSuperview.subviews ) {
        if ( [view isKindOfClass: aClass] ) break;
        if ( ( view = [self findClass: aClass inView: aSuperview] ) ) break;
    }

    return view;
}

- (void) viewDidLoad {
    MkMapView   *map = [self findClass: [MkMapView class] inView: self.view];
}
0 голосов
/ 19 октября 2010

У вас есть свойство setContentSize, установленное на размер содержимого в методе viewDidLoad UIViewController?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...