2011-12-29 2 views
9

В некоторых случаях, не каждый раз, когда мое приложение представляет собой modal view controller, используя presentModalViewController:animated: с modalTransitionStyle, установленным на UIModalTransitionStyleFlipHorizontal, первый экран iPhone отображается за анимацией. В большинстве случаев фон черный, как и ожидалось. Нет ничего ненормального, когда я установил window или rootViewController (a UITabBarController). Я отключил пользовательский интерфейс приложения, но вы можете увидеть проблему на экране, снятом с iPhone 4 во время перехода.Что может привести к тому, что экран iPhone будет виден за модальным переворотом?

Что может вызвать это? Я не знаю, как это сделать, даже если бы я хотел этого поведения.

EDIT: Этот снимок экрана был отправлен мне тестером, я не перепробовал его сам. Они сказали мне, что это произошло во время конкретной сессии приложения, и как только это произошло, это произошло для всех переходов. Когда они прекратили/перезапустили приложение, это не повторилось, и с тех пор они не видели. Мне интересно, нужно ли мне что-то беспокоить (т. Е. Я могу предотвратить это в коде).

EDIT 2: В этом приложении не используется IB. Все контроллеры/представления создаются в коде.

enter image description here

+0

Это странно это звучит немного как ошибка. Не идеально, если вы не можете воспроизвести его. Вы устанавливаете цвет фона 'UIWindow' в любой момент, возможно, явно устанавливаете, что потенциально может избежать этого, но это чистая спекуляция. –

+0

Я не устанавливаю 'backgroundColor' (или любые другие свойства отображения) окна.Я попытался воспроизвести его, явно установив цвет фона окна на 'clearColor' (и перепутался с' tabBarController.view' и т. Д.). Если бы я мог заставить это случиться, что могло бы дать мне некоторое представление, еще не нашли способ сделать это. – XJones

+0

Да, это было мое мышление. Хотя новые шаблоны Apple имеют тенденцию явно устанавливать окно 'self.window.backgroundColor = [UIColor whiteColor];' я мог ошибаться, но, скорее всего, это была аналогичная ситуация с xibs pre xcode 4.x –

ответ

3

У меня была такая же проблема и раньше. Попробуйте использовать [viewController.view setBackgroundColor:[UIColor blackColor]]; на вид вашего нажатия. Работал для меня так или иначе!

+0

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

+0

Да, я чувствую, что это, вероятно, более/менее случайная вещь, которая случается. Мне только удалось это произошло несколько раз подряд на iPad, счастливое программирование! – Chad

+0

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

0

Я не уверен, но я думаю, что это может быть вызвано ошибкой или изменение основного кода «UIApplication.h», проблема с прошивкой или проблемы с версией Xcode вас иметь.

Seb

0

Я видел эту проблему, даже с Facebook iPhone App. Возможно, это ошибка Apple.

2

Это происходит, когда iOS отправляет предупреждение памяти в приложение, а структура приложения автоматически удаляет все компоненты вида, которые не видны, за исключением того, что структуры данных, связанные с viewController, останутся, и когда есть ссылка на просмотр, снова загрузит представление из nib (в вашем случае loadView называется «догадываюсь»), вы должны убедиться, что ваш код построения конструкции восстановлен и аннулирует все объекты, связанные с компонентами представления, в методе viewDidUnload вашего контроллера представлений.

Вы также можете сделать это, запустив приложение с помощью симулятора, и когда вы находитесь в этом модальном представлении, включите симуляцию «Memory Warning» из меню «Устройство» в верхней части экрана вашего компьютера.

+0

Это не является причиной этой проблемы. Вы правильно относитесь к тому, как iOS (до iOS 6) выгружает представления в ответ на предупреждения о памяти, но это не проблема. – XJones

0

Инструкция для исправления этой проблемы:

  1. Перейти к произведенному XIB и выберите View Controller осуществляется.
  2. Перейдите на панель атрибутов справа. Перейдите в меню «Просмотр» >> Цвет фона.
  3. Теперь установите цвет, который вы хотите вернуть назад.

Надеется, что это помогает :)

Смежные вопросы