Вопрос

Я переместил вид оповещений немного выше, чтобы можно было разместить на экране и клавиатуру.Я просто делаю это, хватая кадр предупреждения и меняя Y после того, как я уже показал предупреждение, чтобы переменные кадра были допустимыми.Это отлично работает на симуляторе, но когда я делаю это на оборудовании, предупреждение начинается в правильном положении, но затем почти сразу же переходит в исходное вертикальное центральное место.Является ли позиция UIAlertView фиксированной вещью, которая не должна меняться в соответствии с рекомендациями по удобству использования, или я просто делаю что-то неправильно?

Спасибо!

Это было полезно?

Решение

На какой ОС вы пытаетесь это сделать?Я заставил это работать как на симуляторе OS 3.0, так и на устройстве OS 3.0:

UIAlertView * alert = [ [ UIAlertView alloc ] initWithTitle:@"Alert" message:@"Alert" 
                        delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil ];

alert.transform = CGAffineTransformTranslate( alert.transform, 0.0, 100.0 );

[ alert show ];

CGAffineTransformTranslate принимает три аргумента:существующее преобразование, преобразование x и преобразование y.В примере, который я использовал, представление оповещений оказалось на 100 пикселей выше, чем обычно.Попробуйте и посмотрите, что произойдет.

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

Другие советы

Поскольку iOS4 перемещаться по UIAlertViews становится сложнее.Я заметил, что если вы добавите подпредставление UITextField в UIAlertView, на iOS4 предупреждение переместится вверх, чтобы клавиатура не перекрывала его.Этого не происходит < iOS4.

Также я заметил, что кадр предупреждения не инициализируется даже после вызова show, поэтому не существует простого программного способа выполнения относительного CGAffineTransformation.Единственным решением было бы выполнить условные преобразования в зависимости от версии ОС.

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

Я, например, начну создавать свои собственные оповещения для сценариев такого типа.

Разве предупреждение не должно быть модальный - то есть:вы обычно не выполняете никаких других действий пользователя, пока активно оповещение?Если это так, то зачем вам видимость клавиатуры?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top