2010-09-17 2 views
0

Я создан Универсальное приложение, в котором я использовал UIModalPresentationFull, для отображения MFMailComposerSheet в iPad, что помогает мне отображать полный экран представления MailComposer в альбомной ориентации ipad. Когда я запускаю приложение в симуляторе ipad, я хорошо работаю. Если я установил его в iPhone simulator 3.0 или 3.1.3, он отобразит ошибку, например: «ошибка:« UIModalPresentationFullScreen »не объявлен (первый использовать в этой функции)« когда я комментирую его и запускаю в iPhone-симуляторе, он работает так, как было бы решением для этой ошибки или, иначе, что любой метод заменяет «UIModalPresentationFull» работает как в ipad, так и в iphone?UIModalPresentationFullScreen дает ошибку в UniversalApplication

Спасибо и привет Venkat

ответ

0

UIModalPresentationFullScreen доступен только в 3,2 (и выше) SDK, так что вы не можете скомпилировать его с SDK ниже, чем это.

Однако вам не нужно использовать универсальное приложение - вы скомпилируете его с самым высоким SDK, который вы собираетесь запускать, а затем вам нужно проверить во время выполнения, если доступны методы/классы, которые вы используете , Вы устанавливаете это в своих настройках сборки: Базовый SDK должен быть установлен на самый высокий SDK, который вы используете (вероятно, 3.2 для iPad) и Цель развертывания iPhone OS должна быть установлена ​​в 3.0 - самый низкий SDK, на котором может работать ваш код запустить.

Вы должны делать это каждый раз, когда вы используете 3.2 только немного кода:

if ([controller respondsToSelector:@selector(setModalPresentationStyle:)]) 
    [controller setModalPresentationStyle:UIModalPresentationFullScreen]; 

Тогда, даже если вы собрали против 3.2 SDK, при запуске его на более низких устройствах SDK, этот метод не будет запущен.

Я тестирую это на iphone, у которого все еще есть SDK 3.0. Я не знаю точно, как вы будете тестировать в симуляторе с более низким SDK извините.

+0

MR deanWombourne вот мой код, я не знаю, как реализовать выше код, пожалуйста. "MFMailComposeViewController * подборщик = [[MFMailComposeViewController Alloc] инициализация]; \t picker.mailComposeDelegate = я; NSString * = NSLocalizedString почтового сообщение (@" EMAIL_SUBJECT», @ ""); \t [подборщик SetSubject: почтовое сообщение]; \t NSString * emailBody = NSLocalizedString (@ "email_body", @ ""); \t [подборщика setMessageBody: emailBody isHTML: ДА]; \t \t picker.modalPresentationStyle = UIModalPresentationFullScreen; \t [собственной presentModalViewController: Picker анимированные: ДА]; \t picker.navigationBar.tintColor = UIColorFromRGB (0x003399); \t [сборщик]; – venkat

+0

Извините, я не ответил, я был в отпуске! Вы получили его на работу? – deanWombourne

-1
enter code here 

С помощью условного блока компиляции мы можем изолировать процесс для iPhone и IPad

"#if __IPHONE_OS_VERSION_MAX_ALLOWED> = 30200"

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
{ 
    // The device is an iPad running iPhone 3.2 or later. 
    if ([picker respondsToSelector:@selector(setModalPresentationStyle:)]) 
    { 
     //picker.modalPresentationStyle = UIModalPresentationFullScreen; 
     [picker setModalPresentationStyle:UIModalPresentationFullScreen]; 

    } 
} 

"#endif"

Пожалуйста, удалите кавычки и использовать это, если и еще часть тоже ... (т. е. блок условной компиляции

Смежные вопросы