MKMapView nem hív küldött módszerek

szavazat
10

Egy UIViewController adhatok MKMapView a nézet a vezérlő által vezérelt.

- (void)viewDidLoad {
[super viewDidLoad];
CGRect rect = CGRectMake(0, 0, 460, 320);
map = [[MKMapView alloc] initWithFrame:rect];
map.delegate = self;
[self.view addSubview:map];
 }

Később a vezérlő van

- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView
{
     NSLog(@done.);
}

Kész sosem lett nyomtatva. Semelyik másik küldött módszerek kap hívják vagy hasonló mapView: viewForAnnotation: használok egy MKMapView egy másik alkalmazás, de ez úgy tűnik, hogy megtörténjen minden új alkalmazás teszek. Van bárki látta ezt a viselkedést?

EDIT:

A probléma úgy tűnik, hogy ha UIViewController készül a delegáltja MKMapView, közvetlen alosztálya NSObject úgy tűnik, működik rendben. Tudok dolgozni körül, mint ez, még mindig úgy tűnik, nagyon furcsa, mert én már csináltam ilyet.

A kérdést 04/09/2009 14:42
a forrás felhasználó
Más nyelveken...                            


10 válasz

szavazat
8

Volt, hogy pontosan ugyanaz a probléma: én rendelt <MKMapViewDeledate> az én vezérlő, és összekapcsolta a küldöttet „Fájl tulajdonos” Interface Builder, de még mindig az én végrehajtott megbízottja módszerek nem hívott.

Ennek az az oka, hogy mivel iOS 4, térképek cache, és amikor egy alkalmazás megjeleníti a tárolt térkép majd módszerek, mint például a „mapViewDidFinishLoadingMap” nem hívják. Visszaállítása „tartalom és beállítások” a szimulátor törli a tárolt térképeket, és ezért a problémát oldja meg.

Válaszolt 15/01/2011 19:06
a forrás felhasználó

szavazat
6

Egy kicsit régi, de mivel az iOS 7 van egy új módszer, amely működhet. megoldotta a problémát

- (void)mapViewDidFinishRenderingMap:(MKMapView *)mapView fullyRendered:(BOOL)fullyRendered
Válaszolt 14/06/2015 22:48
a forrás felhasználó

szavazat
4

Lehet, hogy kell menni a KSZ és ellenőrzési húzza a MKMapView a nézet conroller, majd válassza ki küldött, hogy ez egy küldöttet ???

Válaszolt 29/01/2010 00:59
a forrás felhasználó

szavazat
1

Volt egy hasonló probléma a módszerek MKMapViewDelegate nem hívják. A problémám beállítása MKCoordinateRegionMakeWithDistance és regionThatFits a kontroller -viewDidLoad () akartam csak azt mutatják, a régióban a házam körül, és nem indul el a világkép. Tehát hozzáadása után kommentárok a kontroller viewDidLoad, elkezdtem egy időzítőt. Mikor jár le egy másodperc alatt, Ráközelíthetek régióban szeretnék a fenti API-k és a delegált módszerek tüzet. Ez csak azért nekem egy kicsit szédült, és hajlik arra, hogy hányni én iPad.

Most már csak meg kell foglalkozni a rohadt alacsony memória figyelmeztetéseket.

Válaszolt 21/05/2010 16:38
a forrás felhasználó

szavazat
1

Talán elég nyilvánvaló, de csak ellenőrzés:

Előfordult meggyőződött róla, hogy viewcontroller nyilatkozatot megfelelően történt. Valami hasonló:

@interface YourViewController : UIViewController <MKMapViewDelegate>
Válaszolt 04/09/2009 16:02
a forrás felhasználó

szavazat
0

A problémám az, hogy elfelejtettem beállítani helyét a szimulátorban. Ide Simulator -> Debug -> Location -> Custom location...és a MKMapViewDelegatemódszerek indul hívás

Válaszolt 04/04/2017 09:19
a forrás felhasználó

szavazat
0

Volt egy hasonló kérdéssel XCode 6.1 épület az iOS 8.1, ha egyik MKMapViewDelegate módszereket hívott. A 2. kérelem azonos kódot eredményezte MKMapViewDelegate módszereket hívott, mint várták.

A ViewController.m a mapView megbízottja az alábbiak szerint állapítják:

- (void)viewDidLoad {
    ...
    self.mapView.delegate = self;

A ViewController.h:

@interface myMapViewController : UIViewController <MKMapViewDelegate>
@property (strong, nonatomic) IBOutlet MKMapView *mapView;
@end

Én kézzel tette hozzá a IBOutlet vonal fölött a header fájl, de csak az alkalmazásban, ahol a résztvevő módszerek nem érkezett.

A megoldás az volt, hogy törölje a IBOutlet sort én kézzel adjuk a fejléc, és aztán megy a storyboard és a CTRL-húzza a MKMapView a @interface blokk én ViewController.h. Az azonos IBOutlet újraalakult a header fájlban azzal az eredménnyel, hogy az összes küldött módszerekkel hívták helyesen.

Válaszolt 01/03/2015 06:55
a forrás felhasználó

szavazat
0

Csak futott be ez ismét iOS 7 és rájöttek valami, ami működik következetesen. A kérdés mi általában harci hív setRegion előtt a régió keretében (részletek megjelenítésekor). iOS 7 hozzáadja az új megbízottja módszereket képviselő minden cserép válásához, de előre iOS 7 a tárolt lapok megakadályozza a küldött módszer mapViewDidFinishLoadingMap történő hívását. Ehelyett egy „pendingRegion” változó, hogy ellenőrizze, ha van „sorban áll” a régió változást, ha a térképet teszi, és akkor egyszerűen használja a viewDidAppear eljárás, mint egy jel a térképen már átadták a képernyőn, és ezáltal a régió lesz az összefüggésben .

Add a változónak a fejléc:

MKCoordinateRegion pendingRegion;

Add ezt a módszert a kódot:

-(void)initPendingRegion {
    pendingRegion.center = CLLocationCoordinate2DMake(0.0, 0.0);
}

Add, hogy ez a viewDidAppear:

if(pendingRegion.center.latitude != 0.0) {
        MKCoordinateRegion useRegion = pendingRegion;
        [self initPendingRegion];
        [self.mapView setRegion:useRegion animated:YES];
}
Válaszolt 26/09/2013 16:26
a forrás felhasználó

szavazat
-1

Számomra ez működött hozzáadása után NSLocationWhenInUseUsageDescriptionstring info.plist

Válaszolt 03/05/2015 12:12
a forrás felhasználó

szavazat
-2

Azt is találkozott ugyanezzel a kérdéssel, mint a tiéd. Azt találták, hogy: az iPhone SDK 3.2 - amikor egy új UIViewController egy hozzá tartozó XIb fájlt (egy jelölőnégyzetet a UIViewController létrehozása párbeszédablakban) delegáltja módszerek MKMapViewDelegate soha nem hívott.

Azonban, amikor el az alábbiakat, fut is.

  1. Hozzon létre egy új UIViewController osztály (soha ellenőrizze a lehetőséget: létrehozni xib társított fájlt a vezérlő)

  2. Hozzon létre egy új XIb fájlt. Add a térképen az Interface Builder + beállítás a tulajdonos osztály az osztály 1. lépés + beállítás megbízottja célunk a térkép pont a tulajdonos osztály.

  3. Végrehajtása küldötte módszerek UIViewController osztályú az 1. lépésben.

  4. Ha akarom használni a ViewController (a hozzáadott térkép), azt töltse be a hegy neve az alábbi példa:

    MapPreviewController* mapPreviewController = [[MapPreviewController alloc] 
        initWithNibName:@"MapPreviewController" bundle:[NSBundle mainBundle]];
    
    [self.centerPanelView addSubview:mapPreviewController.view];
    

A futtatott ok. Nem tudom, mi az Apple megváltoztatja vagy tett a XIb fájlt, amikor új tartalommal UIViewController a varázsló segítségével, de lehet, hogy a kiváltó oka az én problémám. Beletelik 1 nap, hogy megtalálja ezt a hülye megoldás.

Ha talált egy másik, kérjük, ossza nekem.

Kösz

Válaszolt 02/05/2010 11:09
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more