Странная нежелательная анимация, происходящая в приложении iPhone

Я ненавижу публиковать это, но я вижу нежелательную анимацию в приложении для iPhone, над которым я работаю. Я никогда не видел этого раньше в моих приложениях или любых других приложениях.

это приложение для iOS 4.2 и только для айфонов. Странность происходит даже на iPhone4.

примеры:

  • когда приложение запускает UIAlertView, Он " летит сверху или сверху слева."

  • когда-либо UITableView свитки, новые (стандартные) данные ячейки "расширяются слева от ячейки" при первом появлении и, таким образом, заполняются.

  • когда UITextField в него введен текст, ввод медленный, и вы можете увидеть, как курсор скользит вправо над новой буквой. Если есть кнопка "Очистить" в UITextField, он скользит с левой стороны до UITextField сначала заключила.

  • когда UIPickerView прокручивается, прокрутка до вновь отображаемой строки "летит" новые данные строки в левом верхнем углу.

общее поведение похоже на старое старое старое Apple II + basic, где вы можете установить "скорость=20" и "замедлить" компьютер.

что я знаю: Это происходит на нескольких телефонах (4 и 3GS). Это не происходит в других моих приложениях. Это не происходит в других приложениях в целом. Кажется, это согласовано во всем приложении. Это не маленький проект, поэтому я не уверен точно, когда он начался, но он не начался с таким поведением. Анимация, связанная с упомянутыми элементами, отсутствует. Проблема, кажется, влияет на все в приложении.

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

кто-нибудь видел такое поведение раньше? Я не единственный разработчик, поэтому есть ли какая-то возможная настройка, которую может установить кто-то другой?

1 ответов


похоже, вы оставляете анимацию UIView незавершенной. Если вы начинаете анимацию, но никогда не заканчиваете ее, все манипуляции UIView после этой точки будут анимированы, как вы описываете. Странная часть - я думал, что UIKit завершит их для вас (и зарегистрирует сообщение), если контроль передан обратно runloop с открытым блоком анимации. Либо этого больше не происходит, либо вы постоянно запускаете новые анимационные блоки.

вы должны просмотреть свой код для всех примеры +[UIView beginAnimations:context:] и убедитесь, что все они сбалансированы соответствующим +[UIView commitAnimations].