Почему над панелью навигации моего приложения отображается темный оверлей высотой 20 пикселей? - PullRequest
1 голос
/ 15 февраля 2011

Опять же, я почти полностью уверен, что это что-то глупое, что я делаю, но я часами бился об это и не получаю.

Я пытаюсьреструктурировать иерархию представления моего приложения.Мне нужно иметь возможность обнаруживать изменения ориентации интерфейса пользователя глобально, чтобы правильно вращать представление «Загрузка», отображаемое, когда приложение загружает контент.(изменения ориентации устройства, кажется, происходят в разное время, вызывая случайное вращение представления, которое должно реагировать на эти события).

Приложение ранее добавляло представление UINavigationController в главное окно.Я изменил иерархию, чтобы добавить представление подкласса UIViewController в главное окно, и добавил представление UINavigationController в представление подкласса.Подкласс UIViewController управляет отображением и вращением подпредставления «Загрузка», и я ожидал, что остальная часть приложения продолжит вести себя нормально, так как при вставке одного дополнительного пустого представления в иерархию не ощущалось, что я слишком сильно меняюсь.

Моей первоначальной проблемой было позиционирование UINavigationController - он был на 20 пикселей ниже, что приводило к разрыву между строкой состояния и панелью навигации и отрезало нижние 20 пикселей панели вкладок.Я смог настроить это, установив свойство frame в представлении UINavigationController в свойство bounds представления UIViewController, которое исправило положение.

Однако теперь я застрял в темноте высотой 20 пикселей.«Наложение» поверх моей панели навигации.Если бы я догадался, я бы сказал, что это черный с непрозрачностью 50%.События касания на этой панели не работают (например, если я пытаюсь нажать кнопку «Назад» через оверлей, ничего не происходит).Тот факт, что высота равна высоте строки состояния, не ускользнул от меня, но я в полной растерянности относительно того, что может быть причиной.

Ridiculous navigation bar problem

Я ненавижу чувствовать эту глупость, поэтому, если у кого-то есть понимание этой проблемы, вы действительно сделаете мой день.Заранее спасибо!

1 Ответ

0 голосов
/ 15 февраля 2011

ОК, из вашего поста всплывают некоторые вещи.

Моей первоначальной проблемой было позиционирование UINavigationController - он был на 20 пикселей ниже

Это делаетМне кажется, это связано с вашей новой проблемой.

Мне удалось настроить это, установив свойство frame в представлении UINavigationController для свойства bounds вида UIViewController

Это похоже на то, что представление, в которое он был загружен, было смещено на 20 пикселей, и когда вы устанавливаете его на границы, оно перемещает его в область просмотра Windows.

События касания на этой панели неработать (например, если я пытаюсь нажать кнопку «Назад» через оверлей, ничего не происходит)

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

Из того, что вы сказали, я считаю, что ваша проблема в контроллере базового вида, который вы только что добавили.Попробуйте переделать рамку, чтобы она соответствовала тому, где вы хотите.Затем выньте код, который вы вставили, чтобы установить фрейм навигационных контроллеров.Контроллер навигации должен соответствовать представлению, которое вы добавили, и как только у вас будет этот основной вид, где он должен быть (очевидно, на 20 пикселей выше), тогда все должно работать.

...