2011-02-07 15 views
15

私はiOS開発に没頭しており、iPhone専用アプリに変わった普遍的なアプリケーションを作成しました。 iPad上で動作するとき、白い画面がロードされるのは、iPadコードがまだ書かれていないからです。私がしたいのは、それが何とかiPadで終わるなら、それがiPadの "iPhone"モードで動くことです。 「対象デバイスファミリ」プロパティを「iPhone」に設定しているため、App StoreでiPadアプリとして表示されないようにする必要がありますが、iPadとiPhoneの両方を所有している場合は、 iPadには、サポートするコードがないiPadモードでアプリを実行しようとするため、白い画面がロードされます。このような状況では、実際にはiPadで動作していましたが、iPhoneモードで動作していました。iOS開発:iPadがiPadモードで普遍的なアプリを実行できないようにするにはどうすればよいですか?

私の質問は、iPadのユニバーサルアプリを実行すると、どのように「iPhoneモード」でそれを実行するために知っているか、またはiPadの特定のコードを実行しない...

  1. ですか?
  2. 普遍的なアプリケーションでは、どのコードがiPhoneであり、どのコードがiPadであるかはどのように分かりますか?
  3. iPadがiPadコードを実行しようとしないで、代わりにiPhoneコードを実行できないようにするにはどうすればよいですか?

私は全然noobのように聞こえるが、私は謝る。あなたの知恵に感謝します!

答えて

13
  1. iPadは配列ですUIDeviceFamilyキー、のために、アプリケーションのInfo.plistに見えます。値 '1'はiPhone/iPod Touchを示し、 '2'は 'iPad'を示します。 '1'が、 '2'がない場合は、シミュレートされたiPhone環境を取得します。この値は、あなたの 'Targeted Device Family'の結果としてInfo.plistに自動的に書き込まれます。 iPhoneに設定しているのにまだiPadビルドを取得していると思われる場合は、1つのビルド設定に設定していないことを確認してください。本当に自信がありたいのであれば、作成したアプリバンドル内のInfo.plistをチェックしてください。
  2. いずれかのデバイスで正しく起動するように書き込むバイナリは1つだけです。
  3. iPadをターゲットに設定しないでください。 iPadはユニバーサルアプリを実行すると、どのように「iPhoneモード」でそれを実行するために知っているか、またはiPadの特定のコードを実行しない
+0

ありがとう、トミー、それは私の問題だった。ターゲットデバイスファミリがデバッグモードに設定されていました。 – BeachRunnerFred

+1

これは悪い考えです。 Appleの指示に従ってUIDeviceFamilyキーを直接追加しないでください。http://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW11 。代わりに、ビルド設定TARGETED_DEVICE_FAMILYを使用します。 – Erik

9

「普遍的な」機能を削除して、それをiPhoneアプリにしたいと思っています。

Xcodeで、Project => Edit Project Settings => Buildに移動します。

ユニバーサルまたは「対象デバイスファミリ」を検索します。

iPhoneを選択してください。

Goodbye iPad。

0

info.plistファイルには、どのメインウィンドウを読み込むかを示す各デバイスのエントリがあると思います。 MainWindow-iPhoneとMainWindow-iPadの両方を同じ-iPhoneメインウィンドウに設定するのが速くて汚い解決策になるかもしれません。

1
  1. 普遍的なアプリケーションを作成すると、あなたのiPadコードが使用されます。 「iPhoneモード」で普遍的なアプリを実行することはできません。 AppleはあなたがiPadの設計仕様に従っていることを確認します。ユニバーサルアプリで

  2. 、2アプリ-デリゲートがありますAppDelegate_iPhone.hとAppDelegate_iPad.h

  3. あなたはAppDelegate_iPadであなたのiPhoneのコードを追加することができますが、Appleは喜んではありません。

+0

ありがとう、Manni。質問1への誰の回答も、単にTargeted Device FamilyプロパティをiPhoneに変更するだけです。すべてがうまくいくはずです。あなたの考え? – BeachRunnerFred

+0

「対象デバイスファミリ」をiPhoneに変更すると、普遍的なアプリではなくiPhone専用アプリが使用されます。 iPadでiPhone専用アプリを起動すると、「iPhoneモード」で表示されます。うーん、これがあなたを助けてくれるのかどうかは分かりません...あなたの質問はどうでしたか?ユニバーサルアプリやiPhone専用アプリが欲しいですか?または、あなたのiPhone専用アプリがiPad上で異なって見せたいですか? :-) – Manni

+0

素晴らしい、私の質問に答えた、ありがとう! – BeachRunnerFred

2

iPadがTargeted Device Familyの場合、iPadが存在しない場合は、iPhoneモードでアプリを実行する必要があることがわかります。

ユニバーサルアプリケーションでは、どのコードがiPhoneであり、どのコードがiPadであるかはどのように分かりますか?

アプリのコードを書くときに、デバイスごとに行う必要のあることがある場合は、ターゲティングするデバイスを指定する必要があります。

がどのようにではなく、iPhoneのコードを実行して、iPadのコードを実行しようとしてからのiPadを防ぐことができ(下記のコード例を参照してください)?

Targeted Device FamilyでiPadをサポートしていません。場合(あなたのアプリケーション、アプリケーションのAppDelegateで

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    /* run something specific for the iPad */ 
} 
else 
{ 
    /* run something specific for the iPhone */ 
} 
0

(コードで)それを行うための別の方法である:特定のコードは、例えば、特定のデバイスを必要とすることを第二に、あなたのコードでは、指定しないでくださいユニバーサルアプリケーションとして作成されました)、次のコードを見つけることができます:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { 
     //iPad... 

    } else { 
     //iPhone and iPod Touch... 

    } 

    return YES; 
} 

表示するビューをカスタマイズすることができます。

1

Info.plistファイルには追加しないでください。代わりに、Appleのsuggestionごとにビルド設定に追加します。具体的には、TARGETED_DEVICE_FAMILYビルド設定を使用します。

ストーリーボードを使用している場合は、TARGETED_DEVICE_FAMILY設定に関係なく使用されるので、Info.plistからUIMainStoryboardFile〜ipadキーを削除することも必要です。

幸運を祈る!

0

Xcode 5ので、あなたがプロジェクトから開発のターゲットデバイスを選択したことができます。Development Info内のデバイスセクションから

、今あなたが選択することができます。

1-iPhone 2 - iPadの3 - ユニバーサル

enter image description here

0

私は何かが間違っているとあると思いますあなたの設定はiPhone専用デバイスのコードを対象にすると、iPhone用に設計された画面をiPad上で実行できるようになるため(x2の可能性があるため縮小されます)。AppStoreの(iPhone/iPadの/両方)からの提案は、あなたがシミュレータでそれを試す(とデバイスとしてのiPadを選択する)ことができ、ユーザの好み

  • に依存

    • コードがために同じですiPad/iPhone! ...上記の[[UIDevice currentDevice] userInterfaceIdiom]を使用しない限り...
  • 関連する問題