UITextView в UIAlertview не работает в iOS 4.x - PullRequest
1 голос
/ 08 марта 2012

В моем медицинском приложении у меня есть новая функция, которая позволяет пользователю загружать 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 может быть ошибка. Любые мысли для исправления или альтернативы будут высоко ценится. Заранее спасибо.

1 Ответ

3 голосов
/ 08 марта 2012

Попробуй так:

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Enter new file name:" message:@" " delegate:self cancelButtonTitle:@"Continue" otherButtonTitles:@"Cancel", nil];
UITextView *mTextView = [[UITextView alloc] init];
[mTextView setFrame:CGRectMake(20.0, 30.0, 245.0, 25.0)];
[alert addSubview:mTextView];
[mTextView release];
[alert show];
[alert release];
...