Xcode 5 et ios7

Bonjour à  tous,


 


je viens de passer mon appli de xcode 4.6 à  xcode 5. Après correction des petits soucis de xib, mon appli rame tellement que ce n'est carrément pas viable. Il semblerait que c'est surtout les touchs qu'il a du mal à  détecter, mais je ne suis pas trop sûre. Est-ce que quelqu'un d'autre a des soucis de réactivité ?


 


«1

Réponses

  • xylowebxyloweb Membre
    septembre 2013 modifié #2

    Aucun problème pour moi. Xcode 5 et le dernier SDK iOS 7 fonctionnent très bien.


  • AliGatorAliGator Membre, Modérateur
    Aucun souci non plus. Instruments?
  • Bonjour,


     


    Pour ma part, j'ai aucun souci avec xcode 5 / iOS 7, mise à  part :


    - l'adaptation de certains .XIB car certains objets de base n'ont plus le même encombrement,


    - l'usage des styles des UITableView


    - le comportement de la StatusBar


    - ...


     


    Ton souci ne serait-il pas sur tes re-compilations xcode 5 pour les iPhone 4 avec iOS 7 ?

  • Merci pour vos réponses respectives.


     


    Instruments : je ne vois rien. Au contraire, j'ai rectifié quelques soucis de mémoire qui restaient, c'est mieux. Apparemment pas de problèmes de ce côté.


    C'est une appli très gourmande en dessin, j'ai aussi optimisé la rapidité, suite à  la lecture d'un article, en privilégiant le travail sur les layers au lieu des CGcontext, ce qui avait l'air de payer dans mes tests juste avant la transition, est-ce une piste ?


    Ne serait-ce qu'au démarrage, il met un temps fou à  me donner la main sur les boutons.


    Je vais quand-même voir si je n'ai pas fait une autre bêtise, mais je ne crois pas.


  • KubernanKubernan Membre
    septembre 2013 modifié #6

    Bonjour,


     


    Tu testes bien directement sur un iDevice ? As-tu monitoré ton appli avec Time Profiler ? Cela devrait te permettre de localiser les parties de ton code qui consomment le plus de CPU.


  • BooleanneBooleanne Membre
    septembre 2013 modifié #7

    Merci Kuberman, oui, je teste bien sur device réel (Ipad retina). Instrument ne me donne pas trop de pistes pour le moment.


     


    EDIT : j'ai du faire une boulette parce que j'ai un process qui prend toute la CPU... Je cherche... et grand honte sur moi  ;) ... je boucle sur le redraw en continu. En fait, j'aime mieux ça !


  • BooleanneBooleanne Membre
    septembre 2013 modifié #8

    En fait, il n'y a pas que ça, c'est en essayant de corriger que j'ai fait des bourdes.


     


    Dites moi si je me trompe, mais avant IOS 7, un uipangesture détecté ne déclenchait pas un touchesBegan. 


    Maintenant c'est le cas, on passe dans le touchesBegan avant que le move soit pris en compte, et dans mon cas, ça pose problème.


    Finalement, c'était une question de delayed begin et delayed end, qui a du changer avec cette version. Je pense que c'est résolu.


  • BooleanneBooleanne Membre
    septembre 2013 modifié #9

    Non, je confirme,


     


    encore des soucis de détection de touch dans certains cas. Etrange. Ma CPU est OK.


     


    C'est dans les UITableViewCell personnalisées. 


     


    J'ai du modifier des petits détails : rendre mes cell sélectionnables et  jouer sur le firstResponder. Ca a l'air d'être bon.


     


    EDIT : ce n'est pas encore ça. J'ai retesté sous IOS 6 et pas de soucis, ça marche :


     


    J'ai un UITableViewCell customisée, dans laquelle j'ai un UITextField.


    Sous IOS 7, le touch sur le UITextField ne déclenche pas le begin editing (il est bien enabled). 


     


    Merci d'avance.

  • BooleanneBooleanne Membre
    septembre 2013 modifié #10

    Bon, on dirait que je suis toute seule à  rencontrer ce problème... 3 jours que je planche, et pas de solution au final.


     


    Est-ce que ça, ça peut être une piste ?


    http://www.curiousfind.com/blog/646


     


     


    D'autres précisions :


     


    J'ai dans des UITableVieCell customisées : UIButton, UISwith, UISegmentedController, et UITextField : aucun ne répond à  mes touch : pourtant ça marche impeccable avec les anciens IOS.

  • Bonjour Booleanne,


     


    J'ai des UITableViewCell avec 2 UITextFields et 4 UIButtons et je n'ai pas détecté de problème particulier avec Xcode 5 et iOS 7 mais je n'ai testé qu'avec le simulateur. Tous les contrôles répondent correctement.


  • Merci Eric P. Cela confirme que je dois oublier quelque chose. Dans mon cas, cela ne marche ni sur le simulateur, ni sur device.


     


    Comment tu crées tes UITableViewCell, par un addSubview sur ta cell ou par l'autre méthode, comme celle par exemple décrite ici :


     


    http://www.appcoda.com/customize-table-view-cells-for-uitableview/


     


     


    Merci d'avance.

  • Génial, je viens de trouver.


     


    La contentView de la cell, sur IOS 7, se superpose au dessus de la custom cell. (Merci Apple pour ces 3 jours perdus :))


    Si je la mets hidden, ça fonctionne.

  • Eric P.Eric P. Membre
    septembre 2013 modifié #14

    C'est comme l'exemple que tu donnes :


    - fichier xib de définition de ma custom cell,


    - classe pour cette custom cell


     


    mais avec quelques différences dans le cellForRowAtIndexPath.


     


    Réponse après la bataille...


  • Ben du coup, c'est bizarre, je fais comme ça aussi. Mais, bon, puisque maintenant ça marche... je ne cherche pas à  comprendre.


  • AliGatorAliGator Membre, Modérateur

    La contentView de la cell, sur IOS 7, se superpose au dessus de la custom cell. (Merci Apple pour ces 3 jours perdus :))
    Si je la mets hidden, ça fonctionne.

    Je ne comprends pas trop, la contentView de la cell a toujours été une subview de la cell, donc s'est toujours superposée au dessus de la custom cell, non ?
    Depuis toujours il faut mettre ton contenu dans la contentView, et pas directement dans la cell (voir le Table View Programming Guide pour plus de détails), donc si tu mets ton contenu directement dans la cell et que tu masques la contentView (hidden=YES) c'est pas l'ordre logique des choses (et du coup par exemple si tu rajoutes des accessoryViews à  ta cell, ou veut ajouter le swipeToDelete ou pouvoir passer ta TableView en mode édition, si tu as mis ton contenu perso dans la cell et pas sa contentView, tu vas avoir des soucis, l'accessoryView ou les boutons Delete & co qd tu swipe et tout ça ne vont pas décaler ton contenu comme prévu mais vont s'y superposer...)
  • BooleanneBooleanne Membre
    septembre 2013 modifié #17

    Je ne sais pas trop non plus, je ne me suis jamais occupée de la contentView.


     


    J'ai mis en couleur ma contentView : Sous IOS 6,  on ne la voit pas.


    Sous IOS 7.0, elle recouvre ma cell. 


     


    Mes tables ne sont pas éditables, je n'ai pas besoin des accessoryViews.


  • AliGatorAliGator Membre, Modérateur

    Je ne sais pas trop non plus, je ne me suis jamais occupée de la contentView.

    o_O T'as eu du bol que ça marche jusqu'à  présent alors.

    J'ai mis en couleur ma contentView : Sous IOS 6,  on ne la voit pas. Sous IOS 7.0, elle recouvre ma cell.

    C'est normal, sous iOS6 la backgroundColor de la contentView était remplacée au runtime par la backgroundColor de la cell (ça a toujours été le boxon ce mix des backgroundColors dans les TableViewCells... jusqu'à  ce que sous iOS7 il reviennent à  un truc cohérent justement)
  • BooleanneBooleanne Membre
    septembre 2013 modifié #19

    Oui, j'ai certainement pas mal de bol quand je vois le nombre de carences que j'ai, d'avoir quelque chose qui fonctionne bien, et sans bugs. Mais je ne lésine pas sur les tests, ça compense ! :)


     


     




    C'est normal, sous iOS6 la backgroundColor de la contentView était remplacée au runtime par la backgroundColor de la cell (ça a toujours été le boxon ce mix des backgroundColors dans les TableViewCells... jusqu'à  ce que sous iOS7 il reviennent à  un truc cohérent justement)




     


    Oui, mais si je la recolorise au cellForRow, je devrais quand-même la voir sous IOS 6, non.


     


    Enfin, le "hidden", c'était juste pour tester. Là , je vais juste passer mes views au dessus.


  • AliGatorAliGator Membre, Modérateur
    Non essaye plutôt dans le willDisplayCell à  la limite
  • Merci. 


  • N'empêche, juste pour comprendre, je viens de rajouter le code suivant dans le "willDisplayCell"



    cell.backgroundColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:0.7];
    cell.contentView.backgroundColor = cell.backgroundColor;

    Et, en IOS 6, mon contenu est au dessus, alors qu'en IOS 7, la contentView se place au dessus, recouvrant mon contenu. Il n'y a pas qu'une question de couleur. Il y a bien quelque chose qui a du changer dans la logique des UITableViewCell.


  • Merci, xyloweb, je me sens moins seule ;)


  • Au risque de me faire bâcher...


    Je me bats avec le Simulateur depuis un moment, je patauge serais-je le seul ? iOs 7 et Xcode 5


    Globalement je fais les exercices du livre "Programmation iOS" de BiG nerf ranch et j'en suis au chapitre 15/16. Ce livre comporte des erreurs même dans le code exemple, donc pour essayer de trouver (suis-je têtu ?) j'utilise le même exemple disponible chez Pearson et ceux disponibles sur le site US...


     


    J'ai beau essayer de solliciter le même simulateur dans les mêmes conditions, les résultats sont carrément très fantaisistes.


    Parfois l'iPhone a une échelle qui dépasse l'écran ? Parfois l'iPad, avec ou sans bouton Home (avec Xcode4 jamais) ? 


     


    J'ai beau sélectionner l'iOs Simulateur on a l'impression qu'il s'en fout...


     


    Est-ce aussi le fait de code créé avec Xcode4 ? Est-ce le fait qu'il y ait plusieurs projets d'ouvert ?



  • Au risque de me faire bâcher...




     


    Faut pas avoir peur... sinon, je ne poserai pas beaucoup de questions. On est là  pour apprendre.


    Honnêtement, pour ma part, pas autant de problèmes que toi.


     


    Quelques soucis dont celui cité plus haut, et des décalages dus à  la taille des vues qui a changé. Je suis dans le cas d'une app créée avec XCode 4, passée à  Xcode 5. 


    Mais je n'ai jamais plusieurs projets ouverts en même temps... je me perdrais et risquerais de faire (encore plus) de bêtises ;)

  • CéroceCéroce Membre, Modérateur


    J'ai beau sélectionner l'iOs Simulateur on a l'impression qu'il s'en fout...




    Il ne s'en fiche pas, mais il redémarre ton appli. Regarde dans Xcode, en haut à  gauche à  côté du bouton Run, quelle est la cible sélectionnée (iPhone, iPad, retina, 3,5"/4"). Forcément, si ce n'est pas la même que celle choisie dans le simu, elle va changer à  nouveau.

  • Merci pour cette réponse a laquelle j'ai mis un peut de temps pour répondre (un bug coinçant), je n'avais jamais trop fait attention a ce détail, tout de même curieux comme démarche vu que c'est Xcode qui lance le simulateur, mais bon...


    En tous cas merci, comme quoi...


  • CéroceCéroce Membre, Modérateur


    tout de même curieux comme démarche vu que c'est Xcode qui lance le simulateur




    Je suis entièrement d'accord avec toi.


    Mais je trouve qu'il y a plus curieux encore, comme le double réglage de la position courante simulée à  la fois dans Xcode et dans le simu.

  • AliGatorAliGator Membre, Modérateur

    tout de même curieux comme démarche vu que c'est Xcode qui lance le simulateur, mais bon...

    Je n'ai peut être pas la même approche ou ai peut-être loupé une étape, mais au contraire moi je trouve ça logique que, puisque c'est Xcode qui lance le Simulateur, c'est dans Xcode et par projet qu'on dit quelle version du simulateur on veut lancer, non ?
    En fait je ne suis pas sûr d'avoir compris par quel autre moyen tu essayais de passer avant de ton côté ? (Parce que bon moi j'ai toujours choisi le Simulateur sur lequel je voulais tester mon code en le sélectionnant dans Xcode, à  côté de ce bouton Run quoi, donc je n'ai jamais vu d'autres endroits où régler ça)
     
     

    le double réglage de la position courante simulée à  la fois dans Xcode et dans le simu.

    Tu entends quoi par ça ? J'ai pas trop compris "le réglage de la position courante simulée" ?
  • CéroceCéroce Membre, Modérateur

    En fait je ne suis pas sûr d'avoir compris par quel autre moyen tu essayais de passer avant de ton côté ? (Parce que bon moi j'ai toujours choisi le Simulateur sur lequel je voulais tester mon code en le sélectionnant dans Xcode, à  côté de ce bouton Run quoi, donc je n'ai jamais vu d'autres endroits où régler ça)

    Dans l'application Simulateur iPhone, tu as la possibilité de changer de device simulé à  tout moment. Or, changer de simu provoque l'arrêt de l'application. Je t'assure que ça perturbe beaucoup les stagiaires en formation. 

    Tu entends quoi par ça ? J'ai pas trop compris "le réglage de la position courante simulée" ?

    Dans le simulateur, on peut simuler la gélocalisation courante.
    Dans Xcode aussi, au bas de la fenêtre, près des outils du débogueur. Je ne sais jamais lequel des deux (Xcode ou simu?) l'emporte.
Connectez-vous ou Inscrivez-vous pour répondre.