В моем медицинском приложении у меня есть новая функция, которая позволяет пользователю загружать PDF-файлы и другие ресурсы в папку «Документы» для просмотра в автономном режиме. Приложение поддерживает iOS 4.1+ и iOS 5. Пользователь вводит имя для загруженного файла в виде предупреждения. Для iOS 5 разместить текстовое поле в предупреждении теперь легко. Для похожего внешнего вида в iOS 4.x этот код обычно работает хорошо:
alertNameEntryOld = [[UIAlertView alloc] init];
[alertNameEntryOld setDelegate:self];
[alertNameEntryOld setTitle:@"Enter new file name:"];
[alertNameEntryOld setMessage:@" "];
[alertNameEntryOld addButtonWithTitle:@"Cancel"];
[alertNameEntryOld addButtonWithTitle:@"Continue"];
//Check current device orientation.
UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
//Place text field position appropriate to device position.
if (interfaceOrientation == UIInterfaceOrientationPortrait)
alertTextFieldOld = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)
alertTextFieldOld = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 45.0, 245.0, 25.0)];
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft)
alertTextFieldOld = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 30.0, 245.0, 25.0)];
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight)
alertTextFieldOld = [[UITextField alloc] initWithFrame:CGRectMake(20.0, 30.0, 245.0, 25.0)];
[alertTextFieldOld setBackgroundColor:[UIColor whiteColor]];
//Auto-capitalize first letter with shift key enabled.
[alertTextFieldOld setAutocapitalizationType:UITextAutocapitalizationTypeSentences];
[alertNameEntryOld addSubview:alertTextFieldOld];
[alertNameEntryOld show];
[alertTextFieldOld release];
Мое разочарование связано с тем, что этот код прекрасно работает для iOS 4.1, 4.2 и 4.3 на iPhone, а также для iOS 4.1 на iPad. Тем не менее, если запустить его на iPad с iOS 4.2 или 4.3, тот же код создает представление предупреждения с просто отсутствующим текстовым полем. Хотя мое приложение предназначено для iPhone, я, конечно же, не хочу, чтобы пользователи iPad, работающие с ним, сталкивались с этой ошибкой. Похоже, что в программном обеспечении iOS может быть ошибка. Любые мысли для исправления или альтернативы будут высоко ценится. Заранее спасибо.