Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Swift iOS

    13 octobre 2016 à 17:04:14

    Bonjour a tous !

    Je viens de commencer le cours, et j'ai un probleme avec le code qui sert a cacher le clavier... J'ai utilise le meme code que presente dans le cours, et j'obtiens cette erreur: "Overriding method with selector 'touchesBegan:withEvent:' has incompatible type '(Set<UITouch>,UIEvent?) -> ()'

    Voici le code:

        //Cache le clavier lorsque l'utilisateur touche l'écran
        override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
            self.view.endEditing(true)
        }

    Any help ? :ange:

    • Partager sur Facebook
    • Partager sur Twitter
      13 octobre 2016 à 17:27:12

      A tout hasard, as tu bien fait l'import de l'UIKit ?

      • Partager sur Facebook
      • Partager sur Twitter
      La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
        13 octobre 2016 à 17:40:30

        Oui !

        Voici le code complet, au cas ou

        //
        //  ViewController.swift
        //  First App
        //
        //  Created by Etienne Arnaud on 13/10/16.
        //  Copyright (c) 2016 Etienne Arnaud. All rights reserved.
        //
        
        import UIKit
        
        class ViewController: UIViewController, UITextFieldDelegate {
        
            @IBOutlet var tfNombreEntre : UITextField!
            @IBOutlet var bFin : UIButton!
            var modeAuto = false;
            
            override func viewDidLoad() {
                super.viewDidLoad()
                // Do any additional setup after loading the view, typically from a nib.
                tfNombreEntre.delegate = self
            }
        
            override func didReceiveMemoryWarning() {
                super.didReceiveMemoryWarning()
                // Dispose of any resources that can be recreated.
            }
            @IBAction func clicSurFin(sender : UIButton) {
                //On vérifie que le texte entré par l'utilisateur n'est pas nil
                if let resultat = tfNombreEntre.text where resultat != "" {
                    //On regarde si le résultat est 8
                    if resultat == "8" {
                        alert("Bravo", message: "4 + 4 = 8\nC'est une bonne réponse")
                    } else {
                        alert("Faux", message: "Ce n'est pas la bonne réponse, réessayez !")
                    }
                } else {
                    alert("Champ vide", message: "Veuillez entrer une valeur")
                }
            }
            @IBAction func autoOnOff(sender : UISwitch){
                modeAuto = sender.on
                bFin.hidden = modeAuto
            }
            
            @IBAction func texteModifie(sender : UITextField){
                if modeAuto{
                    //On verifie que le texte entre par l'utilisateur n'est pas nil
                    if let resultat = sender.text where resultat != ""{
                        //On regarde si le resultat est 8
                        if resultat == "8"{
                            alert("Bravo", message: "4 + 4 = 8\nC'est une bonne reponse")
                        }
                    }
                }
            }
            func textFieldShouldReturn(textField: UITextField) -> Bool {
                if modeAuto{
                    //On vérifie que le texte entré par l'utilisateur n'est pas nil
                    if let resultat = tfNombreEntre.text where resultat != "" {
                        //On regarde si le résultat est 8
                        if resultat == "8" {
                            alert("Bravo", message: "4 + 4 = 8\nC'est une bonne réponse")
                        } else {
                            alert("Faux", message: "Ce n'est pas la bonne réponse, réessayez !")
                        }
                    }
                }
                return true
            }
            
            //Ouvre une popup
            func alert(title: String, message: String) {
                let alert = UIAlertController(title: title, message: message, preferredStyle: .Alert)
                let ok = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Cancel, handler: nil)
                alert.addAction(ok)
                self.presentViewController(alert, animated: true, completion: nil)
            }
            
            //Cache le clavier lorsque l'utilisateur touche l'écran
            override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
                self.view.endEditing(true)
            }
        
        
        }



        • Partager sur Facebook
        • Partager sur Twitter
          13 octobre 2016 à 18:53:32

          Salut,

          Tu développes en Swift 3 ou Swift 2 ?

          • Partager sur Facebook
          • Partager sur Twitter
            15 octobre 2016 à 0:29:23

            Bonjour,

            je souhaiterais développer une application iOS pour mon projet de Terminale qui me permettrais d'envoyer des informations par bluetooth a une carte Easypic. je voulais savoir si c'était faisable et si la manipulation était compliquée. Un camarade à réussi (sous android) a le faire avec une vue pour se jumeler avec le shield bluetooth "comme dans les réglage" et ensuite envoyer des valeur par bluetooth.

            Je ne sais pas si c'est très clair mais en bref, nous avons réussi à le faire sous android, est-ce possible sous iOS avec Xcode et si oui, la manip' est elle très complexe?

            Merci d'avance 

            Cordialement

            -
            Edité par maxenceperelle 15 octobre 2016 à 0:30:18

            • Partager sur Facebook
            • Partager sur Twitter
              17 octobre 2016 à 1:27:28

              Bonjour maxenceperelle,

              Oui, c'est tout à fait possible, voici un petit tuto pour te connecter à un appareil bluetooth https://medium.com/@ryanjjones10/how-to-set-up-ble-with-swift-2-2-34bb6f209de2#.6opxdt5si

              Il est en Swift 2.2 mais tu y trouveras certainement ton bonheur :)

              Bon courage !

              • Partager sur Facebook
              • Partager sur Twitter
                17 octobre 2016 à 13:49:35

                Salut !

                Je developpe en Swift 3

                • Partager sur Facebook
                • Partager sur Twitter
                  17 octobre 2016 à 15:02:41

                  Donc c'est sûrement ça le problème ! Tu suis un tuto écrit en Swift 2 il me semble. Quand t'as des erreurs en faisant copier coller, regarde la doc. Pour touchesBegan on peut lire :

                  func touchesBegan(_ touches: Set<UITouch>, withevent: UIEvent?)

                  (désolé pour le formatage, c'est mal fichu pour mobile

                  On peut donc voir que la déclaration a changé 

                  édit : Lien vers la doc : https://developer.apple.com/reference/uikit/uiresponder/1621142-touchesbegan

                  -
                  Edité par Geda 17 octobre 2016 à 15:18:59

                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 octobre 2016 à 17:25:20

                    Bonjour j'ai un problème au niveau du tuto sur la partie MVC.  J'ai une erreur unwrapping sur les lTitle et lConsigne.Je ne comprend pas très bien. J'ai dû mal implémenter les variables.

                    Voici le code source ci-dessous :

                    import UIKit
                    
                    class Exercice: UIViewController,UITextFieldDelegate {
                        @IBOutlet var slValue : UISlider!
                        @IBOutlet var tfNombreEntre : UITextField!
                        @IBOutlet var bFin : UIButton!
                        @IBOutlet var stepperValue: UIStepper!
                        var niveau : Int!
                        var calcul : CalculExercice!
                        @IBOutlet var lTitle : UILabel!
                        @IBOutlet var lConsigne : UILabel!
                        
                        override func viewDidLoad() {
                             tfNombreEntre.delegate = self
                            // Do any additional setup after loading the view, typically from a nib.
                            
                            //Déclaration du selecteur pour que le gesture recognizer puisse l'appeler
                            let slLongPress = #selector(longClicSurSlider)
                            
                            //On dit que la méthode appelée est dans self et le sélecteur est slLongPress
                            let gestLongPress = UILongPressGestureRecognizer(target: self, action: slLongPress)
                            
                            //On attribue le gesture recognizer au slider
                            slValue.addGestureRecognizer(gestLongPress)
                            
                            //On peut donc changer le texte des labels dynamiquement
                            lTitle.text = calcul.titre
                            //On doit ajouter = ? à la fin de la consigne
                            lConsigne.text = "\(calcul.consigne) = ?"
                            
                            print(niveau)
                        }
                    
                        override func didReceiveMemoryWarning() {
                            super.didReceiveMemoryWarning()
                            // Dispose of any resources that can be recreated.
                        }
                        
                        //Ouvre une popup
                        func alert(title: String, message: String) {
                            let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
                            let ok = UIAlertAction(title: "Ok", style: UIAlertActionStyle.cancel, handler: nil)
                            alert.addAction(ok)
                            self.present(alert, animated: true, completion: nil)
                        }
                        
                        //Cache le clavier lorsque l'utilisateur touche l'écran
                        func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
                            self.view.endEditing(true);
                        }
                        
                        
                        
                        @IBAction func clicSurFin(sender : UIButton) {
                            //On vérifie que le texte entré par l'utilisateur n'est pas nil
                            if let resultat = tfNombreEntre.text , resultat != "" {
                                //On regarde si le résultat est bon
                                if Int(resultat) == calcul.reponse {
                                    alert(title: "Bravo", message: "4 + 4 = 8\nC'est une bonne réponse")
                                } else {
                                    alert(title: "Faux", message: "Ce n'est pas la bonne réponse, réessayez !")
                                }
                            } else {
                                alert(title: "Champ vide", message: "Veuillez entrer une valeur")
                            }
                        }
                        
                        var modeAuto : Bool = false
                        
                        @IBAction func autoOnOff (sender : UISwitch) {
                            modeAuto = sender.isOn    //On attribue à modeAuto la valeur du UISwitch
                            bFin.isHidden = modeAuto  //Cache la vue
                        }
                    
                        
                        func textFieldShouldReturn(_ textField: UITextField) -> Bool {
                            if modeAuto {
                                //On vérifie que le texte entré par l'utilisateur n'est pas nil
                                if let resultat = textField.text , resultat != "" {
                                    //On regarde si le résultat est 8
                                    if Int(resultat) == calcul.reponse {
                                        alert(title: "Bravo", message: "4 + 4 = 8\nC'est une bonne réponse")
                                    } else {
                                        alert(title: "Faux", message: "Ce n'est pas la bonne réponse, réessayez !")
                                    }
                                }
                            }
                            return true
                        }
                        
                        //Dès que le texte est modifié, je mets à jour les valeurs des autres éléments
                        @IBAction func texteModifie (sender : UITextField) {
                            //Si le contenu existe
                            if let resultat = sender.text {
                                //Si le contenu est convertible en entier
                                if let entier = Int(resultat) {
                                    //On ne doit pas pouvoir aller au-delà de 99
                                    if entier > 99 {
                                        sender.text = "99"
                                    }
                                    
                                    //On met à jour les valeurs des autres éléments
                                    slValue.setValue(Float(entier), animated: true)
                                    stepperValue.value = Double(entier)
                                }
                            }
                        }
                    
                        //Dès que le slider change
                        @IBAction func sliderMove(sender : UISlider) {
                            let entier = Int(sender.value)
                            tfNombreEntre.text = "\(entier)"
                            stepperValue.value = Double(entier)
                        }
                        
                        //Dès que le stepper change
                        @IBAction func stepperTouched(sender : UIStepper) {
                            let entier = Int(sender.value)
                            tfNombreEntre.text = "\(entier)"
                            slValue.value = Float(entier)
                        }
                        
                        // gère les clique long
                        func longClicSurSlider(sender : UILongPressGestureRecognizer) {
                            alert(title: "Clic long repéré", message: "Faire un long press sur un slider ne sert à rien.")
                        }
                        
                        // on gère le glisser déposer
                        func glisserDeposerStepper(sender : UIPanGestureRecognizer) {
                            //On récupère la vue à laquelle est attachée le gesture recognizer
                            let step = sender.view!
                            
                            //On récupère la position du doigt sur l'ecran
                            let coordonneesDuToucher = sender.location(in: self.view)
                            
                            //On déplace la vue récupéré en plaçant son centre au niveau du doigt
                            step.center = coordonneesDuToucher
                        }
                    
                    }
                    



                    -
                    Edité par kakame 17 octobre 2016 à 17:27:21

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 octobre 2016 à 18:13:08

                      Bonsoir,

                      Je travaille actuellement sur l'activité 1 de ce MOOC:

                      1-Lorsque mon glisser-déposer est terminé le stepper revient à sa place d'origine.

                      2-Lors du glisser-déposer le champ texte s'incrémente ou décrémente suivant le sens du déplacement du stepper et le slider évolue en fonction.

                      3-Problème ayant mis les limites de 0 et 99 c'est uniquement à ce moment qu'apparait le mouvement du stepper. Quelqu'un aurait-il une petite idée ?

                      Bien à vous

                      Philippe

                      -
                      Edité par Philippe2463 17 octobre 2016 à 18:14:57

                      • Partager sur Facebook
                      • Partager sur Twitter
                      La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                        17 octobre 2016 à 19:09:00

                        Salut,

                        kakame : Tes IBOutlets sont-ils bien connectés au storyboard ?

                        Philippe : sur les anciennes versions d'xcode (< 8) il fallait zoomer suffisamment avant de pouvoir ajouter des éléments. Quelle est ta version d'Xcode ?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 octobre 2016 à 20:30:00

                          Bonsoir Geda,

                          c'est la version 7.3.1

                          A+

                          • Partager sur Facebook
                          • Partager sur Twitter
                          La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                            18 octobre 2016 à 10:26:47

                            Geda  : Oui mes boutons sont bien liés au storyboard. En témoigne cette capture d'écran.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              18 octobre 2016 à 13:44:09

                              Philippe : Dans ce cas en zoomant tu ne devrais plus avoir de problème de "retour à la position initiale" si ?

                              Kakame : En essayant de comprendre ton log, je pense deviner ça (j'ai pas fait le cours donc je ne sais pas quel est l'exercice en question) : Tu souhaites changer de vue, pour ça tu cast un UIViewController en Exercice. Sauf qu'aucun de tes View Controller n'est un Exercice. Vérifie dans "Identity Inspector" si dans "class" il y a écrit "Exercice" (pour la vue exercice, évidemment). Vérifie également, dans le même onglet, que pour Module il y ait "Current App" d'écrit (et non None)

                              -
                              Edité par Geda 18 octobre 2016 à 13:50:05

                              • Partager sur Facebook
                              • Partager sur Twitter
                                18 octobre 2016 à 14:34:54

                                Je viens de vérifier j'ai bien un UIController du nom d' Exercice et le module c'est "current- first app_2".

                                -
                                Edité par kakame 18 octobre 2016 à 14:39:23

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  18 octobre 2016 à 15:56:35

                                  Geda,

                                  je n'ai pas de problème de retour à la position initiale, je pensais avoir été clair dans mon premier post mais apparemment ce n'est pas le cas! Merci tout de même 

                                  A+

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                    19 octobre 2016 à 6:19:38

                                    Salut,

                                    j'aimerais savoir comment developper en swift en étant sous windows

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 octobre 2016 à 12:30:05

                                      Bonjour VLADIMIRYANLIE,

                                      La solution est d'utiliser une machine virtuelle.

                                      Par exemple pour linux : https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/installez-linux-dans-une-machine-virtuelle

                                      Je ne peux pas vraiment te donner de lien pour créer une machine virtuelle Mac OSX pour des raisons légales.

                                      Pour installer Swift sous Linux : https://swift.org/download/

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        23 octobre 2016 à 16:24:00

                                        Bonjour,

                                        Je suis en train de suivre le tuto sur swift pour pouvoir créer une application sur ios et j'aimerais commencer à travailler sur le design de l'application. Par contre je ne sais pas du tout quel dimension faire et ça n'a pas l'air d'être expliqué dans le tuto (ou alors je l'ai pas vu).

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          24 octobre 2016 à 16:17:27

                                          Bonjour Charles Masson dit @La Masse,

                                          Je travaille actuellement sur l'activité 1 de ce MOOC et je réédite un de mes précédents posts:

                                          1-Lorsque mon glisser-déposer est terminé le stepper revient à sa place d'origine.

                                          2-Lors du glisser-déposer le champ texte s'incrémente ou décrémente suivant le sens du déplacement du stepper et le slider évolue en fonction.

                                          3-Problème: Ayant mis les limites de 0 et 99 c'est soit au moment où j’atteins une de ces limites que le stepper rejoint mon doigt (ici le curseur de ma souris) en mouvement soit lorsque le glisser-déposer est terminé. Auriez-vous une petite idée ?

                                          Bien à vous

                                          Philippe

                                          -
                                          Edité par Philippe2463 24 octobre 2016 à 18:26:29

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                            28 octobre 2016 à 11:55:28

                                            Bonjour bydont-25

                                            Je ne comprends pas bien ton problème. Qu'entends-tu par "dimension"?

                                            Bonjour Philippe2463

                                            Je ne comprends pas le problème : le stepper ne fonctionne que lorsque vous êtes à la limite?

                                            Pouvez-vous montrer votre bout de code pour que je comprenne?

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              28 octobre 2016 à 15:06:32

                                              Merci Charles d'avoir pris en considération mon soucis,

                                              Depuis mon dernier post, ayant cherché plus de précision dans la détection de la direction du mouvement du stepper, maintenant quand je fait un glisser déposer mon stepper clignote pendant le mouvement jusqu'à l'atteinte de la limite haute ou basse suivant la direction puis ces limites étant dépassées il suit tout le temps ma flèche. Ce qu'il se passe en fait :

                                              -à chaque test de la condition sur la variable entier le stepper s'affiche à sa position initiale.

                                              -quand on ressort du if le stepper s'affiche à la même position que la flèche de la souris représentant mon doigt

                                              d'où cet effet de clignotant.

                                              Voici donc un bout de code comme convenu:

                                              CODE ENLEVÉ FAUTE DE RÉPONSE APRÈS 3 SEMAINES

                                              -
                                              Edité par Philippe2463 22 novembre 2016 à 13:41:52

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                                31 octobre 2016 à 13:43:14

                                                La Masse a écrit:

                                                Bonjour bydont-25

                                                Je ne comprends pas bien ton problème. Qu'entends-tu par "dimension"?

                                                Et bien c'est une application pour iphone 4, 5 et 6 (peut être même ipad) et ils n'ont pas tous la même résolution d'écran. Du coup quel taille je dois choisir quand je créer le design de mon application ?

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  8 novembre 2016 à 11:05:07

                                                  Bonsoir @La Masse

                                                  Avez-vous une idée de mon problème de glisser-déposer?

                                                  Merci

                                                  -
                                                  Edité par Philippe2463 22 novembre 2016 à 13:38:48

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                  La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                                    24 novembre 2016 à 15:45:03

                                                    Salut,

                                                    Pour le langage Suift il faut Xcode qui ne peut etre telecharger léglaement que sur mac OS (selon la licence aple) mais moi je suis sous Windows existe il une autre apli pour utiliser se langage?

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      24 novembre 2016 à 16:27:06

                                                      Bonsoir Mickael,

                                                      Voici ce qui est dit plus haut:

                                                      La Masse a écrit:

                                                      La solution est d'utiliser une machine virtuelle.

                                                      Par exemple pour linux : https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/installez-linux-dans-une-machine-virtuelle

                                                      Je ne peux pas vraiment te donner de lien pour créer une machine virtuelle Mac OSX pour des raisons légales.

                                                      Pour installer Swift sous Linux : https://swift.org/download/

                                                      Bien à toi,

                                                      Philippe

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                                                        25 novembre 2016 à 19:19:52

                                                        Bonjour, j'ai un soucis avec Label.

                                                        Je voudrais modifier le texte d'un Label avec un nombre que je tire au hasard.

                                                        Donc mon Label devras ce modifier par rapport au nombre qui a été défini par la variable

                                                        var nombrealea = arc4random() % 100

                                                        Merci

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          26 novembre 2016 à 18:56:44

                                                          Bonjour,

                                                          Ton problème est relativement mal expliqué. Ceci dit, il suffit de faire monLabel.text = nombrealea. Ou l'autre solution (que tu as découvert depuis ces dernières 48h je l'espère) est de taper "iOS label modify text" sur ton moteur de recherche favori. ça marche aussi avec les mots "change", "set" et même "" à la place de modidy. D'ailleurs on peut même taper juste "iOS label". Ne pas trouver seul la réponse à cette question ça craint... Ça m'étonne même que ce ne soit pas expliqué dans ce mooc. A moins que je n'ai rien compris à la question. Ce qui m'étonnerait beaucoup moins.

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            1 décembre 2016 à 21:33:35

                                                            Bonjour, est il possible d'utiliser Xcode sous windows en simulant l'installation de OS X grâce a des logiciels tels que Virtual Box?

                                                            Si oui, je ne connais pas bien le fonctionnement de Virtual Box donc ou puis-je trouver des information pour apprendre à le prendre en main?

                                                            Merci d'avance.

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              2 décembre 2016 à 1:31:15

                                                              Salut,

                                                              Oui c'est possible. Interdit, mais possible. Par contre tu vas pleurer du sang je pense. Ceux qui ont essayé ont eu de lourdes séquelles psychologiques.

                                                              http://www.arnakazim.com/installer-machine-virtuelle-mac-os-x-sur-pc/ 

                                                              http://www.bootyourbrain.com/utilisation/virtualiser-mac-os/

                                                              En cherchant un peu je pourrais trouver d'autres liens. Mais je suis certain que tu peux le faire seul !

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              MOOC Swift iOS

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown