von Apple rät den folgenden Code verwenden, ob auf einem iPad oder iPhone/iPod Touch zu erkennen ausgeführt wird:Wie bekommt man UI_USER_INTERFACE_IDIOM() mit iPhone OS SDK zu arbeiten <3.2
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
// The device is an iPad running iPhone 3.2 or later.
// [for example, load appropriate iPad nib file]
}
else {
// The device is an iPhone or iPod touch.
// [for example, load appropriate iPhone nib file]
}
Das Problem ist, dass UI_USER_INTERFACE_IDIOM () und UIUserInterfaceIdiomPad sind NICHT in den SDKs vor 3.2 definiert. Dies scheint den Zweck einer solchen Funktion vollständig zu überwinden. Sie können nur auf iPhone OS 3.2 kompiliert und ausgeführt werden (iPhone OS 3.2 kann nur auf dem iPad ausgeführt werden). Wenn Sie also UI_USER_INTERFACE_IDIOM() verwenden können, wird immer ein iPad angezeigt.
Wenn Sie diesen Code verwenden und OS 3.1.3 (das neueste iPhone/iPod Touch-Betriebssystem) zum Testen Ihres iPhone-gebundenen universellen Anwendungscodes verwenden, erhalten Sie Compilerfehler, da die Symbole nicht in 3.1 definiert sind .3 oder früher, beim Kompilieren für iPhone Simulator 3.1.3.
Wenn dies der von Apple empfohlene Ansatz zur Laufzeitgeräteerkennung ist, was mache ich falsch? Ist es jemandem gelungen, diesen Ansatz zur Geräteerkennung zu nutzen? Diese
Das ist, wenn Sie für 3.0 kompilieren möchten. Du solltest, wie drootang sagte, für 3.2 kompilieren und es auf einem 3.0-Gerät ausführen, weil 3.2 das ist, was du an den AppStore übermittelst. – conradev
Ich stimme zu, aber es gibt keine Möglichkeit, im iPHONE Simulator (im Gegensatz zu iPad) zu testen, während für 3.2 gebaut. Wenn Sie beide Sims testen wollen, müssen Sie diese Art von Trickserei machen. –