2017-03-26 3 views
-2

Je sais comment faire un geste de secousse et comment trouver l'emplacement séparément, mais je ne sais pas comment trouver l'emplacement après que l'utilisateur secoue l'appareil. J'ai xcode version 6.4.Swift- Trouver l'emplacement après la fin du mouvement

Maintenant j'ai une fonction de fin de mouvement. Et une fonction showUserLocation.
Je voudrais mettre une instruction dans motionEnded qui appelle le showUserLocation afin que l'emplacement soit trouvé si l'utilisateur secoue le téléphone.

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) { 

     ????? 

    } 

// Showing the user location 
func showUserLocation(sender : AnyObject) { 
    let status = CLLocationManager.authorizationStatus() 

    //Asking for authorization to display current location 
    if status == CLAuthorizationStatus.NotDetermined { 
     locationManager.requestWhenInUseAuthorization() 
    } else { 
     locationManager.startUpdatingLocation() 
    } 
+0

Cette question est trop large et la réponse est une réponse simple mais peut être difficile à mettre en œuvre est presque toujours le cas dans le développement de logiciels, après le téléphone shakes, en vous votre code, vous savez que le tremblement est arrivé , maintenant trouver l'emplacement –

+0

Plus précisément: ce qui se passe dans ces parenthèses override func motionEnded (mouvement: UIEventSubtype, événement Event: UIEvent) { ???? } Qui se connecte à la fonction showUserLocation que j'ai configurée –

+0

Vous ne pouvez pas poser de questions comme, écrire du code dans les commentaires est trop difficile à comprendre et vous donner une réponse, ce qui entre dans les crochets est le code que vous voulez, dans Quelque forme ou syntaxe, vous pouvez appeler une de vos fonctions si elle est accessible, dans la portée, sur le droit fil –

Répondre

0

Votre question n'a rien à voir avec une position de fin de mouvement ou d'appel. Votre question est celle de la syntaxe de base de Swift et de la compréhension générale de tout langage de programmation.

L'implémentation de code pour obtenir un emplacement a été "encadrée" dans une fonction d'action, peut-être une retouche UIButton à l'intérieur de laquelle un expéditeur était requis comme argument. Mais vous n'utilisez pas du tout l'expéditeur pour obtenir des informations de localisation, il est donc facile de déplacer cette implémentation vers sa propre fonction, showUserLocationHelper pour que l'action func puisse appeler getLocation et que le mouvement de secousse puisse appeler get location.

Le nom de votre fonction d'action: showUserLocation est mal nommé, il doit avoir un nom comme btnShowUserLocationTouchUpInside, un nom long, mais ne pas confondre comme ce que vous avez nommé votre fonction d'action et que essayé d'utiliser dans motionEnded.

override func motionEnded(motion: UIEventSubtype, withEvent event: UIEvent) { 
    //you can't pass the sender so couldn't call your showUserLocation action function, 
    //so move implementation of showUserLocation to showUserLocationHelper and now you can do what you need after shake event 
    showUserLocationHelper() 
} 

// Showing the user location 
//this is an action function for some UI element like a UIButton and the sender is required to be passed for this function to fire thus, motionEnded cannot directly call it 
//but you do not use sender at all 
func showUserLocation(sender : AnyObject) { 
    showUserLocationHelper() 
} 

func showUserLocationHelper() { 
    let status = CLLocationManager.authorizationStatus() 

    //Asking for authorization to display current location 
    if status == CLAuthorizationStatus.NotDetermined { 
     locationManager.requestWhenInUseAuthorization() 
    } else { 
     locationManager.startUpdatingLocation() 
    } 
}