{"id":1902,"date":"2010-04-05T00:53:00","date_gmt":"2010-04-05T00:53:00","guid":{"rendered":"http:\/\/svay.com\/blog\/?p=1902"},"modified":"2010-04-05T00:53:00","modified_gmt":"2010-04-05T00:53:00","slug":"creer-une-web-app-pour-l-ipad-avec-split-view","status":"publish","type":"post","link":"https:\/\/svay.com\/blog\/creer-une-web-app-pour-l-ipad-avec-split-view\/","title":{"rendered":"Cr\u00e9er une Web app pour l&#8217;iPad avec Split View"},"content":{"rendered":"<p>\u00c0 moins de vivre dans une cave (ou d&#8217;\u00eatre inscrit au <a href=\"http:\/\/www.engadget.com\/exclude\/Apple\/rss.xml\" hreflang=\"en\">flux Engadget sans news Apple<\/a>), vous savez que l&#8217;iPad est enfin sorti. Avec lui arrivent les premi\u00e8res applications natives d\u00e9di\u00e9es, rendues possibles par le SDK 3.2 disponible depuis quelques semaines d\u00e9j\u00e0. Mais ce qui m&#8217;int\u00e9resse, c&#8217;est plut\u00f4t de voir comment on peut offrir une exp\u00e9rience adapt\u00e9e avec <strong>des technologies Web<\/strong>. Avec Javascript, HTML5 et CSS3, on peut faire des miracles. C&#8217;est d&#8217;ailleurs ce qu&#8217;a fait Google en lan\u00e7ant <a href=\"http:\/\/gmailblog.blogspot.com\/2010\/04\/gmail-on-ipad.html\" hreflang=\"en\">la version iPad de GMail<\/a>. Cette version sp\u00e9cifique \u00e0 la tablette (testable <a href=\"http:\/\/lifehacker.com\/5508260\/how-to-use-gmails-attractive-new-tablet+friendly-interface-on-your-regular-old-computer\" hreflang=\"en\">en changeant son User Agent<\/a>) impl\u00e9mente une des grandes nouveaut\u00e9s de l&#8217;iPad: <strong>les Split Views<\/strong>.<\/p>\n<h3>Les Split Views<\/h3>\n<p>Avant de passer au code, voyons ce qu&#8217;est une Split View. Si on se r\u00e9f\u00e8re aux <em>iPad Human Interface Guidelines<\/em>: &#8220;A split view is a full-screen view that consists of two side-by-side panes&#8221;. C&#8217;est donc simplement une vue coup\u00e9e en deux, avec deux panneaux ind\u00e9pendants. Dans l&#8217;image qui suit, vous pouvez voir l&#8217;application Mail en mode SplitView lorsque l&#8217;iPad est \u00e0 l&#8217;horizontal. <img decoding=\"async\" src=\"\/blog\/public\/ipad-splitview-popover.jpg\" alt=\"iPad SplitView vs Popover\" title=\"iPad SplitView vs Popover, avr. 2010\" \/><\/p>\n<p>Si on y pense, \u00e7a ressemble beaucoup \u00e0 des frames ou des pseudo-frames. Mais ce n&#8217;est pas si simple, car l&#8217;iPad a un interface tactile. Le doigt sert \u00e0 manipuler l&#8217;int\u00e9gralit\u00e9 de la page. Les frames\/pseudo-frames ne sont habituellement manipulable qu&#8217;avec des <strong><em>gestures<\/em> \u00e0 deux doigts<\/strong>. Pas pratique, et certainement impossible \u00e0 deviner pour l&#8217;utilisateur.<\/p>\n<h3>Impl\u00e9menter des Split Views en Javascript<\/h3>\n<p>Comme ce n&#8217;est pas possible en HTML, ni en CSS, il faut se tourner vers Javascript. Safari sur l&#8217;iPad (et l&#8217;iPhone) r\u00e9pond aux \u00e9v\u00e9nements d\u00e9clench\u00e9s au toucher. Il suffit de brancher des fonctions pour faire scroller les deux panneaux et le tour est jou\u00e9. C&#8217;est d&#8217;ailleurs la solution qu&#8217;a retenu Google pour son application GMail. Donc pour cr\u00e9er des Split Views avec une web app, il suffit de faire de m\u00eame.<\/p>\n<p>Pour cela, nous n&#8217;allons pas repiquer le code de Google (qui est bien obfusqu\u00e9 d&#8217;ailleurs), mais utiliser une biblioth\u00e8que pr\u00eate \u00e0 l&#8217;emploi: <a href=\"http:\/\/cubiq.org\/scrolling-div-for-mobile-webkit-turns-3\/16\" hreflang=\"en\">iScroll<\/a> disponible sous licence MIT. Et plut\u00f4t que d&#8217;expliquer en long et en large, je vous propose de jeter un \u0153il directement sur cet exemple:<\/p>\n<p><a href=\"\/experiences\/iPad_web_app\/\">http:\/\/svay.com\/experiences\/iPad_web_app\/<\/a><\/p>\n<p>Cela fonctionne avec l&#8217;iPhone et l&#8217;iPad. Voil\u00e0 \u00e0 quoi \u00e7a ressemble sur l&#8217;iPad Simulator:<\/p>\n<p> <object width=\"630\" height=\"416\"><param name=\"allowfullscreen\" value=\"true\" \/><param name=\"allowscriptaccess\" value=\"always\" \/><param name=\"movie\" value=\"http:\/\/vimeo.com\/moogaloop.swf?clip_id=10678836&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=1&amp;color=01AAEA&amp;fullscreen=1\" \/><embed src=\"http:\/\/vimeo.com\/moogaloop.swf?clip_id=10678836&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=1&amp;color=01AAEA&amp;fullscreen=1\" type=\"application\/x-shockwave-flash\" allowfullscreen=\"true\" allowscriptaccess=\"always\" width=\"630\" height=\"416\"><\/embed><\/object> <\/p>\n<p>Si vous souhaitez en savoir plus sur les paradigmes d&#8217;interface de l&#8217;iPad, je vous conseille de lire les <a href=\"http:\/\/developer.apple.com\/\" hreflang=\"en\">iPad Human Interface Guidelines<\/a>. C&#8217;est s\u00fbrement le meilleur endroit pour se rendre compte des nouveaut\u00e9s introduites par l&#8217;iPad en termes d&#8217;utilisabilit\u00e9. Il ne vous reste plus qu&#8217;\u00e0 cr\u00e9er vos propres Web Apps pour l&#8217;iPad maintenant.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c0 moins de vivre dans une cave (ou d&#8217;\u00eatre inscrit au flux Engadget sans news Apple), vous savez que l&#8217;iPad est enfin sorti. Avec lui arrivent les premi\u00e8res applications natives d\u00e9di\u00e9es, rendues possibles par le SDK 3.2 disponible depuis quelques semaines d\u00e9j\u00e0. Mais ce qui m&#8217;int\u00e9resse, c&#8217;est plut\u00f4t de voir comment on peut offrir une [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[29],"tags":[],"_links":{"self":[{"href":"https:\/\/svay.com\/blog\/wp-json\/wp\/v2\/posts\/1902"}],"collection":[{"href":"https:\/\/svay.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/svay.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/svay.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/svay.com\/blog\/wp-json\/wp\/v2\/comments?post=1902"}],"version-history":[{"count":0,"href":"https:\/\/svay.com\/blog\/wp-json\/wp\/v2\/posts\/1902\/revisions"}],"wp:attachment":[{"href":"https:\/\/svay.com\/blog\/wp-json\/wp\/v2\/media?parent=1902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/svay.com\/blog\/wp-json\/wp\/v2\/categories?post=1902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/svay.com\/blog\/wp-json\/wp\/v2\/tags?post=1902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}