UIAlertView с текстовыми полями не двигается вверх - PullRequest
0 голосов
/ 23 ноября 2011

Я хочу отобразить подсказку для получения имени пользователя и пароля пользователя.

Я делаю это, отображая UIAlertView и добавляя UITextFields в качестве подпредставлений к нему.

Недавно я переместил свой проектдо XCode 4.2, и я обновил все настройки своего проекта.Мой базовый SDK установлен на iOS 5.0, а цель развертывания - на 4.0.

Затем я заметил, что он создавался только для архитектур armv7, и поэтому я изменил это, чтобы включить armv6, так как я хотел бытакже поддерживаю iPhone 3G.

После этого я заметил, что UIAlertView не двигался вверх, как раньше, и теперь он отображался клавиатурой, когда отображался.Я прочитал в документации Apple, что вы не должны создавать подклассы UIAlertViews (http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAlertView_Class/UIAlertView/UIAlertView.html)), поэтому я изменил способ работы. Это не решило проблему.

Я заметил, что яможно заставить его работать на моем телефоне (iPhone 4, так что архитектура armv7), установив для параметра «Настройка сборки» «Только активная архитектура» значение «ДА».

Я подозреваю, что проблема связана с попыткойсборка для armv6 (и действительно удаление этого из архитектур, для которых я пытаюсь собрать, дает мне предупреждения, которые правильно перемещаются вверх).

Я полагаю, что я должен ответить на мой вопрос сейчас ... Я изо всех сил пытаюсь понятьпочему это ведет себя так, как есть. Я где-то читал (сейчас не могу найти ссылку), что вам не нужно перемещать предупреждение вручную при добавлении текстового поля в UIAlertView в iOS 4 и выше. Так как яСборка хотя бы для iOS 4 не должна работать на обеих архитектурах?

Кроме того, как я могу собрать ее для armv6 и при этом иметь предупреждения, которые правильно перемещаются вверх?ly?

Редактировать: Возможно, я был неправ, но я заметил, что у меня есть 2 экземпляра моего телефона, на которые я могу развернуть приложение.Выбор первого и сборка дают мне приложение, в котором UIAlertViews не перемещаются вверх, когда они должны, но выбор второго заставляет его работать должным образом.Опубликовал бы скриншот, но я новый пользователь, и поэтому у меня пока нет необходимых разрешений ...

1 Ответ

1 голос
/ 24 ноября 2011

Оки,

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

Я решил это, ответив на метод UIAlertViewDelegate willPresentAlertView: и выполнив следующее

- (void) willPresentAlertView: (UIAlertView *) alertView {

    UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];

    if (keyWindow.center.y - alertView.center.y < 0.001f) {

        CGPoint center = [alertView center];
        center.y = center.y - 108.0f;
        [alertView setCenter:center];  
    }
}

Он проверяет, находится ли UIAlertView в центре экрана, и перемещает его вверх, если он есть (то есть, если ОС еще не рассчитала его правильную позицию). Примечание. Вам необходимо добавить проверку, для которой определена ориентация устройства, а затем отрегулировать величину, на которую оповещение перемещено соответственно, если вы хотите, чтобы это работало как для книжной, так и для альбомной ориентации.

...