2012年7月1日日曜日

jQueryで一部ページだけローテーション禁止にする

この週末、同僚氏からの質問を受けて、ちょっと調べてみました。

結論としては、無理です。mobile Safariが対応していません。jQuery/PhoneGapでは1つのアプリを1本のhtmlで処理しますが、htmlごとなら「ロックする/しない」を設定できるものの毎度おなじみの<div data-role="page">のブロック内だけで切り替えることはできません。

ただ、まったく方法がないわけではなくて、一つは、PhoneGapのプラグインをobjective-cで書いて、まいどおなじみのこれを実行する方法です。たぶんこれが正攻法。

 (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return NO;
}

もう一つは「ローテートしたら無理矢理view内部を逆方向に90度ローテートして打ち消す」という力業。ここのページの一番下にコードが出ていますが、iPhoneを回転させると、追従して回転した後でまた無理矢理元に戻るところがいとおかし。

ということで、jQuery mobileでアプリを作る場合は、「一部だけ回転禁止はできないよ」ということを念頭においといた方が良いですね、というお話でした。

基本的に役に立たない情報ですいませんm(_ _)m

0 件のコメント:

コメントを投稿