Добавих екземпляр на MKUserTrackingBarButtonItem в viewDidLoad
на контролер за изглед, както следва:
MKUserTrackingBarButtonItem *userTrackingButton = [[MKUserTrackingBarButtonItem alloc] initWithMapView:self->mapView];
NSMutableArray *toolbarItems = [[NSMutableArray alloc] initWithArray:[mapToolBar items]];
[toolbarItems insertObject:userTrackingButton atIndex:0];
[mapToolBar setItems:toolbarItems];
Услугите за местоположение са включени в Настройки, но не и за приложението. Когато се докосне бутонът MKUserTrackingBarButtonItem, модалният диалогов прозорец пита потребителя дали да позволи на приложението да използва текущото местоположение. Когато е избрано „Не позволявай“, MKUserTrackingBarButtonItem се превръща в сива пунктирана въртяща се икона и оригиналната икона на компас не се възстановява.
Как да възстановя състоянието на бутона, както се прави в приложението Карти?
Желаното поведение е същото като това в приложението Карти.
- Уверете се, че услугите за местоположение са включени в Настройки > Поверителност > Услуги за местоположение.
- Нулиране на местоположение и поверителност в Настройки > Общи > Нулиране > Нулиране на местоположение и поверителност.
- Стартирайте приложението Карти.
- Докоснете иконата на компас в долния ляв ъгъл.
- Появява се диалогов прозорец със съобщението „„Карти“ искат да използват вашето текущо местоположение“. В този момент иконата на компас се е превърнала в сива пунктирана въртяща се икона.
- Изберете „Не позволявай“.
Оригиналната икона на компас е възстановена.
Тествам това на iPhone, а не на симулатора. Горният код работи без проблем, когато услугите за местоположение са включени и на приложението е разрешено да използва текущото местоположение.