Κάθε φορά που ο χρήστης κάνει κύλιση χάρτη ή ζουμ in / out, αυτή η μέθοδος παίρνει ονομάζεται ακαριαία. Θέλω να καθυστερήσει την κλήση με τη μέθοδο αυτή από ας πούμε 2 δευτερόλεπτα. Είναι δυνατόν να το κάνουμε αυτό;
Καθυστέρηση στην κλήση με τη μέθοδο εκπρόσωπος - MapView: regionDidChangeAnimated:
ψήφοι
3
2 απαντήσεις
ψήφοι 4
4
Θα μπορούσε να εφαρμόσει τη μέθοδο αυτή ως εξής:
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
NSNumber *animatedNumber = [NSNumber numberWithBool:animated];
NSArray *args = [[NSArray alloc] initWithObjects:mapView,
animatedNumber,nil];
[self performSelector:@selector(delayedMapViewRegionDidChangeAnimated:)
withObject:args
afterDelay:2.0f];
[args release];
}
Στη συνέχεια, κάπου στην ίδια κατηγορία:
-(void)delayedMapViewRegionDidChangeAnimated:(NSArray *)args
{
MKMapView *mapView = [args objectAtIndex:0];
BOOL animated = [[args objectAtIndex:1] boolValue];
// do what you would have done in mapView:regionDidChangeAnimated: here
}
Φυσικά, αν δεν χρειάζεστε ένα από τα επιχειρήματα αυτά (είτε mapViewή animated), θα μπορούσατε να κάνετε αυτό πολύ πιο απλή με το πέρασμα μόνο αυτό που χρειαζόταν.
Εάν δεν μπορείτε να επεξεργαστείτε τον κώδικα για σας MKMapViewDelegate, ίσως θα μπορούσατε να κάνετε κάτι παρόμοιο με τη μέθοδο swizzling, αν και στη συνέχεια παίρνετε πραγματικά Hacky.
ψήφοι 0
0
Μπορείτε να στείλετε ένα καθυστερημένο μήνυμα με performSelector:withObject:afterDelay:ή μία από τις σχετικές μεθόδους.













