2015-05-01 2 views
0

Я унаследовал приложение iOS, которое было создано до iOS 6. На данный момент он не работает для iOS 8. Моя цель - заставить текущее приложение работать в текущем состоянии в iOS 8, затем писать совершенно новая версия приложения, приносящая ее в современную эпоху.iOS 8 Lock Orientation

Я немного новичок в Objective-C, поэтому я работаю над каждым исправлением, когда я иду. Основная проблема, с которой я столкнулась с приложением в его текущем состоянии, заключается в том, что главный контроллер просмотра находится в режиме «портрет» на открытом. Все приложение должно быть заблокировано вправо, но когда вы его открываете, он начинается с портрета. Если вы нажмете на кнопку «домой» и снова откроете приложение, то в правом ландшафте.

В Info.plist ландшафтное право является единственной поддерживаемой ориентацией. Кроме того, я запер контроллер представления в ландшафтном вправо, используя следующий код:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight); 
} 

-(BOOL)shouldAutorotate{ 
    return YES; 
} 

-(NSUInteger)supportedInterfaceOrientations{ 
    return UIInterfaceOrientationMaskLandscapeRight; 
} 

Ни один из этих исправлений не получил контроллер представления, чтобы открыть в альбомном праве, однако.

Любые идеи о том, как открыть контроллер вида для открытия в ландшафтном режиме?

Приложение настолько старое, что у него нет настройки UINavigationController. Нужно ли устанавливать ориентацию? Любая помощь или советы приветствуются.

EDIT: Вот мой info.plist файл:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>CFBundleDevelopmentRegion</key> 
    <string>English</string> 
    <key>CFBundleDisplayName</key> 
    <string>${PRODUCT_NAME}</string> 
    <key>CFBundleExecutable</key> 
    <string>VersePack</string> 
    <key>CFBundleIconFile</key> 
    <string>Icon.png</string> 
    <key>CFBundleIdentifier</key> 
    <string>com.TiBrew.versePack</string> 
    <key>CFBundleInfoDictionaryVersion</key> 
    <string>6.0</string> 
    <key>CFBundleName</key> 
    <string>${PRODUCT_NAME}</string> 
    <key>CFBundlePackageType</key> 
    <string>APPL</string> 
    <key>CFBundleSignature</key> 
    <string>????</string> 
    <key>CFBundleVersion</key> 
    <string>1.2.0</string> 
    <key>LSRequiresIPhoneOS</key> 
    <true/> 
    <key>NSMainNibFile</key> 
    <string>MainWindow</string> 
    <key>NSMainNibFile~ipad</key> 
    <string>MainWindow-iPad</string> 
    <key>UIInterfaceOrientation</key> 
    <string>UIInterfaceOrientationLandscapeRight</string> 
    <key>UIStatusBarHidden</key> 
    <false/> 
    <key>UISupportedInterfaceOrientations</key> 
    <array> 
     <string>UIInterfaceOrientationLandscapeRight</string> 
    </array> 
    <key>UISupportedInterfaceOrientations~ipad</key> 
    <array> 
     <string>UIInterfaceOrientationLandscapeRight</string> 
    </array> 
    <key>UISupportedInterfaceOrientations~iphone</key> 
    <array> 
     <string>UIInterfaceOrientationLandscapeRight</string> 
    </array> 
</dict> 
</plist> 

ответ

0

Какие устройства вы работаете? Люди склонны зацикливаться на этом при работе с iPads.

Попробуйте удалить код, который у вас есть, и зайдите в info.plist (вкладку информации, а не общий) и убедитесь, что «Поддерживаемые интерфейсы (iPad)» и «Поддерживаемые интерфейсы (iPhone)» содержат только 1 элемент, каждый из которых является «Пейзаж (правая кнопка дома)».

Код, который у вас есть, обычно используется только в том случае, если вы хотите заблокировать приложение для разных ориентаций в разных точках, если вы хотите, чтобы вся вещь была заблокирована в одну ориентацию, она не нужна, поэтому у вас также есть хорошая проверка через ваш код, чтобы вы удалили каждую последнюю трассировку.

Кроме того, не имеет значения, что у вас нет настройки UINavigationController.

+0

Спасибо за помощь! Это приложение для iPhone. У меня было ощущение, что я делаю это более сложным, чем это должно было быть. Я попробую ваш ответ и посмотрю, позаботится ли он об этом. –

+0

Я удалил все ссылки на ориентацию в контроллерах вида, и в делегате приложения нет свойств ориентации. Затем я убедился, что для всех поддерживаемых интерфейсов интерфейса info.plist установлено значение «Пейзаж (правая кнопка дома)». Однако при открытии приложения главный диспетчер просмотра все еще открывается в портрете. Я не могу найти причину, почему это связано с тем, что приложение настроено только для поддержки ландшафта. Есть еще мысли? –

+0

Не могли бы вы загрузить свой info.plist, пожалуйста? – David

0

Я ответил на свой вопрос. Основной контроллер представления, который появился в open, не был установлен в качестве контроллера корневого представления для приложения. Я добавил:

self.window.rootViewController = myViewController; 

к моему приложениюDelegate.m, и окно появилось в правильной ориентации.