iOS - строка состояния случайным образом становится сплошной черной - PullRequest
5 голосов
/ 25 февраля 2011

Разработка приложения для iPhone.

У меня действительно странная проблема, когда время от времени строка состояния в верхней части экрана моего приложения становится черным.Не как черная версия строки состояния, но как сплошной черный прямоугольник без текста / значков.Это очень редко, но обычно происходит после возвращения в приложение через многозадачность или с заблокированного устройства (приложение работало в фоновом режиме).Я видел, как это происходит на 3GS и iPhone4.Вот снимок экрана:

enter image description here

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

Как только это происходит, приложение, кажется, продолжает нормально функционировать, даже с исчезнувшей строкой состояния, за исключением случаев, когда я выполняю одно конкретное действие в приложении, которое заставит все внезапно зависнуть (приложение несбой, но все на экране заморожено и не интерактивно).Не объясняя дизайн подробно, конкретное действие, которое вызывает его зависание (после появления ошибки), выполняет простую загрузку в фоновом режиме в базу данных SQL.Сброс приложения - это единственный способ решить проблему, когда появится черная строка состояния.

Кто-нибудь еще сталкивался с этим?Я нигде не могу найти ни одной темы, объясняющей подобное поведение, и это сводит меня с ума.

Ответы [ 4 ]

2 голосов
/ 22 июля 2011

Это произошло однажды в моем приложении, когда я вызвал метод рисования в моем пользовательском подклассе экземпляра UIView непосредственно перед тем, как добавить его в качестве подвида к родительскому представлению.

Решение было, очевидно, простым: добавить его каксначала перед отправкой / вызовом любых пользовательских методов рисования.

Примеры:

CustomView *aView = [[CustomView alloc] init];

[aView drawSomething];

[self.view addSubview:aView]; //wrong approach
[aView release];

Должно быть:

CustomView *aView = [[CustomView alloc] init];

[self.view addSubview:aView];
[aView release];

[aView drawSomething];
0 голосов
/ 18 ноября 2013

У меня была похожая проблема, которую я описал в этом вопросе здесь

Если у вас есть такая проблема, попробуйте удалить любой кадр CGRect, созданный по ссылке: [UIScreen mainScreen] .applicationFrame]и вместо этого создайте кадр, используя более ручное определение.Если это работает, вы можете решить, как действовать с этого момента.

0 голосов
/ 22 марта 2011

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

0 голосов
/ 18 марта 2011

Скриншот отсутствует, но то, что вы описываете, звучит так, как будто вы неправильно реализовали использование встроенных контроллеров представления Apple.

И UINavigationController, и UITabBarController будут автоматически сдвигать всесодержимое внутри них уменьшается на 20 пикселей, если они обнаружат, что на данный момент «предполагается» быть строкой состояния на экране.

Я предполагаю, что у вас есть некоторый код, который удаляет строку состояния, но которыйвключается после того, как код Apple уже обнаружил его и сдвинул все вниз, чтобы приспособиться.

«Исправление» заключается в том, чтобы очень внимательно перечитывать документы по классам Apple и использовать их в соответствии с требованиями Apple (обычнолюди используют их способами, которые кажутся разумными - например, встраивают их в другие представления - но которые Apple явно объявили, не поддерживаются. К сожалению, эти классы от Apple очень хрупкие)

...