Причудливая нежелательная анимация в приложении для iPhone
Я ненавижу публиковать это, но я вижу нежелательную анимацию в приложении для iPhone, над которым я работаю. Я никогда не видел этого раньше в своих приложениях или любых других приложениях.
Это приложение для iOS 4.2 и только для iPhone. Странность происходит даже на iPhone4.
Примеры:
Когда рассматриваемое приложение запускает
UIAlertView
, он "летит сверху или сверху слева".Когда любой
UITableView
прокручивая, новые (стандартные) данные ячейки "расширяются слева от ячейки" при первом появлении и заполнении.Когда
UITextField
В него введен текст, печатание идет медленно, и вы можете увидеть курсор, скользящий вправо над новой буквой. Если есть кнопка "Очистить" вUITextField
, он скользит с левой стороны кUITextField
впервые введен в.Когда
UIPickerView
прокручивает, прокручивает до вновь отображаемой строки, "летит" новой строкой данных сверху слева.
Общее поведение аналогично старому старому Apple II+ basic, где вы можете установить "speed=20" и "замедлить" работу компьютера.
Что я знаю: это происходит на нескольких телефонах (4 и 3G). Это не происходит в других моих приложениях. Это не происходит в других приложениях в целом. Кажется, что это согласованно во всем приложении. Это не маленький проект, поэтому я не уверен точно, когда он начался, но он не начинался с такого поведения. Нет анимации, связанной с упомянутыми предметами. Кажется, что проблема влияет на все в приложении.
Существует даже пример автономного приложения с кодовой базой, которое при интеграции в это приложение prpoblem отображает те же проблемы.
Кто-нибудь видел такое поведение раньше? Я не единственный разработчик, поэтому есть ли какие-то возможные настройки, которые кто-то другой может установить, что вызывает это?
1 ответ
Похоже, вы оставляете анимации UIView незавершенными. Если вы начинаете анимацию, но никогда не заканчиваете ее, все манипуляции с UIView после этой точки будут анимированными, как вы описали. Странная часть - я думал, что UIKit прекратит их для вас (и запишет сообщение), если управление вернется обратно в runloop с открытым блоком анимации. Либо этого больше не происходит, либо вы постоянно запускаете новые анимационные блоки.
Вы должны просмотреть свой код для всех случаев +[UIView beginAnimations:context:]
и убедитесь, что они все сбалансированы соответствующим +[UIView commitAnimations]
,