EKEventEditViewController en anglais et calendrier invisible...

LeChatNoirLeChatNoir Membre, Modérateur
octobre 2012 modifié dans API UIKit #1
Salut,



J'ai 2 problèmes pour le prix d'un image/angry.gif' class='bbc_emoticon' alt='>:(' /> (non, finalement, plus qu'un :-))
  • mon EKEventEditViewController est en anglais... J'ai bien mis fr en native dev région mais rien n'y fait. Ca reste en anglais. Idem pour mes boutons back, done, edit... J'ai l'impression qu'il ne détecte nul part que mon appli est en fr. Et à  part le dev région dans le plist, je vois pas où lui indiquer...

=> Je me répond alors même que j'ai pas encore fini de poster ^^ Ca m'énervait ce truc de débutant alors j'ai cherché partout et j'ai enfin trouvé... Ayant utilisé un template Master-Detail, il y avait par défaut une "localization" en "english". Donc ajout d'une en french et suppression de celle in english et hop, on n'en parle plus.
  • Mon appli créer un calendrier à  elle pour que l'utilisateur puisse retrouver facilement tous ses RDV liés à  mon appli. Je créer donc un calendrier avec ce bout de code :

<br />
	  EKSource *localSource = nil;<br />
	    for (EKSource *source in es.sources)<br />
		    if (source.sourceType == EKSourceTypeLocal)<br />
		    {<br />
			    localSource = source;<br />
			    break;<br />
		    }<br />
	    myCal = [EKCalendar calendarWithEventStore:es];<br />
	    myCal.title = @&quot;Mon Calendrier&quot;;<br />
	    myCal.source = localSource;<br />
	    NSError * error;<br />
	    [es saveCalendar:myCal commit:YES error:&amp;error];<br />

et je récupère l'id avec un myCal.calendarIdentifier.




Ca fonctionne car mes évènements sont créés avec ce calendrier. Mais dans l'appli Agenda, impossible de voir ce calendrier... Du coup, impossible de voir mes évènements...

Pourtant, error est bien vide...


J'oublie qqchose ?

Réponses

  • LeChatNoirLeChatNoir Membre, Modérateur
    hmmmm. Pour le calendrier, j'ai trouvé aussi.

    C'est sioux comme truc. J'avais iCloud d'activé pour les calendriers. Et dans ce cas là , on ne voit pas les calendriers locaux...



    Du coup, j'imagine que je dois tester cette préférence (en admettant qu'on puisse l'avoir qquepart) et que j'ajoute mon calendrier soit aux locaux, soit au cloud selon la pref...



    M'en vais aller voir la doc iCloud :-)
  • 'LeChatNoir' a écrit:


    hmmmm. Pour le calendrier, j'ai trouvé aussi.

    C'est sioux comme truc. J'avais iCloud d'activé pour les calendriers. Et dans ce cas là , on ne voit pas les calendriers locaux...



    Du coup, j'imagine que je dois tester cette préférence (en admettant qu'on puisse l'avoir qquepart) et que j'ajoute mon calendrier soit aux locaux, soit au cloud selon la pref...



    M'en vais aller voir la doc iCloud :-)




    Il faut tout simplement laisser le choix à  l'utilisateur... EKEventStore -sources te donne la liste des stores, à  toi de le parser comme il faut et le donner à  l'utilisateur pour savoir où enregistrer ton évènement.
  • LeChatNoirLeChatNoir Membre, Modérateur


    EKEventEditViewController ne permet pas ce choix...




    Et je pense que la plupart des utilisateurs ne savent même pas qu'il y a des calendriers locaux et des calendriers dans le cloud. Tout du moins, moi, je pensais qu'on pouvait voir les 2.




    Encore une étrangeté qui m'échappe...


    J'ai pas fait mon profil psy mais je dois être UL moi :-) Comme Utilisateur Lambda ^^
  • Tu es sur que EKEventEditViewController n'as pas une ligne "Calendrier" lorsque tu as plusieurs calendrier ?



    Quoi qu'il en soit, le choix fait par ce contrôleur me semble modifié par ton code non ?


    <br />
    	  for (EKSource *source in es.sources)<br />
    				    if (source.sourceType == EKSourceTypeLocal)<br />
    				    {<br />
    						    localSource = source;<br />
    						    break;<br />
    				    }<br />
    		    myCal = [EKCalendar calendarWithEventStore:es];<br />
    
  • LeChatNoirLeChatNoir Membre, Modérateur
    Oui, il y a bien une ligne "Calendrier". J'y force mon calendrier à  moi.



    Mais là  dedans, on n'y voit pas les calendriers locaux à  partir du moment où iCloud est activé. De même dans Agenda d'ailleurs. Si iCloud activé, on voit juste les calendrier iCloud et Anniversaires. Pas les locaux qui deviennent invisibles (et inexistant par la meme occasion).



    Du coup, j'ai modifié mon code comme ça :
    <br />
    for (EKSource *source in es.sources) {<br />
    		    if (source.sourceType == EKSourceTypeLocal)<br />
    			    mySource = source;<br />
    		    else if (source.sourceType == EKSourceTypeCalDAV)<br />
    		    {<br />
    			    mySource = source;<br />
    			    break;<br />
    		    }<br />
    }<br />
    




    De cette manière, si je trouve du iCloud, je le privilégie. Sinon, je prends du local.

    C'est un peu "boite noire" cette histoire.



    Etonnant que la doc des calendriers n'y fasse pas allusion...

    A moins que ce ne soit un bug iOS 6 ?
  • 'LeChatNoir' a écrit:


    Oui, il y a bien une ligne "Calendrier". J'y force mon calendrier à  moi.



    Mais là  dedans, on n'y voit pas les calendriers locaux à  partir du moment où iCloud est activé. De même dans Agenda d'ailleurs. Si iCloud activé, on voit juste les calendrier iCloud et Anniversaires. Pas les locaux qui deviennent invisibles (et inexistant par la meme occasion).



    Du coup, j'ai modifié mon code comme ça :
    <br />
    for (EKSource *source in es.sources) {<br />
    			if (source.sourceType == EKSourceTypeLocal)<br />
    				mySource = source;<br />
    			else if (source.sourceType == EKSourceTypeCalDAV)<br />
    			{<br />
    				mySource = source;<br />
    				break;<br />
    			}<br />
    }<br />
    




    De cette manière, si je trouve du iCloud, je le privilégie. Sinon, je prends du local.

    C'est un peu "boite noire" cette histoire.



    Etonnant que la doc des calendriers n'y fasse pas allusion...

    A moins que ce ne soit un bug iOS 6 ?




    Je dois dire que je ne comprend pas du tout l'intérêt de ta boucle for. Tu peux m'expliquer ?



    Concernant iCloud / Local c'est normal, c'est fait pour être l'agenda de l'utilisateur, quand tu as un compte CalDAV tu ne veux surtout plus utiliser le local qui n'est pas synchronisé.
  • LeChatNoirLeChatNoir Membre, Modérateur
    ben de récupérer la bonne source. A savoir iCloud si dispo, local sinon.
  • 'LeChatNoir' a écrit:


    ben de récupérer la bonne source. A savoir iCloud si dispo, local sinon.




    Pourquoi la récupérer puisque EKEventEditViewController le gère pour toi ?
Connectez-vous ou Inscrivez-vous pour répondre.