Причудливая нежелательная анимация в приложении для iPhone - PullRequest
6 голосов
/ 18 февраля 2011

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

Это приложение для iOS 4.2 и только для iPhone. Странность происходит даже на iPhone4.

Примеры:

  • Когда рассматриваемое приложение запускает UIAlertView, оно «летит сверху или сверху слева».

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

  • Если в тексте UITextField введен текст, печатание происходит медленно, и вы можете увидеть курсор, скользящий вправо над новой буквой. Если в UITextField есть кнопка «Очистить», она перемещается с левой стороны на UITextField, в который она вводится впервые.

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

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

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

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

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

1 Ответ

10 голосов
/ 18 февраля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...