UIButton не отвечает в нижней части экрана на iPad - PullRequest
4 голосов
/ 14 февраля 2011

UIButton не реагирует ни на какие касания, когда он находится в нижней части экрана на iPad (рядом с кнопкой «Домой»). У него включено сенсорное управление, и оно принимает события, но никакой реакции на цель никогда не устанавливается. Я проверил иерархию представления, и она определенно находится на вершине. Он не покрывается строкой меню.

Это происходит только на iPad и только если он находится внизу, у меня нет проблем с iPhone, код одинаков для обоих устройств?

Кто-нибудь знает, что может происходить?

Ответы [ 2 ]

1 голос
/ 18 апреля 2012

У меня только что была похожая проблема с приложением для iPad, которое не отвечает, кроме как в верхней левой четверти экрана, но с универсальным приложением, которое загружает главное окно из MainWindow.xib.

Поскольку приложение универсально и не имеет двух вариантов для .xibs, размер главного окна в xib - iPhone. При запуске на iPad это не отображается, так как по умолчанию свойство clipsToBounds в UIWindow («Clip Subviews» в инспекторе XCode) имеет значение NO, что означает, что подпредставления могут рисовать за пределами окна, и, таким образом, визуально отображаются в полноэкранном режиме (если вы чтобы увидеть его, просто установите для clipsToBounds значение YES в окне UIWindow; это помогает понять).

Чтобы убедиться, что окно получает полноэкранные границы при загрузке из .xib, есть опция «Полный экран при запуске» в свойствах XCode для Windows. Обратите внимание, что это не соответствует общедоступному свойству API UIWindow, поэтому об этом легко можно забыть, просто просматривая документацию по классу UIWindows.

Однако, это выделено в «Просмотр руководства по программированию для iOS», раздел «Windows», в разделе «Создание Windows в Интерфейсном Разработчике» в специальном поле с надписью «Важно» ...

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

ОК, так что я понял, в чем проблема.

Это были размеры UIWindow. Я перепутал ширину и высоту (я создаю UIWindow программно, чтобы быть понятным) этого. Так как я установил правильные размеры подпредставлений, они отображались правильно, но не могли получить события касания, где не было окна внизу. Просто чтобы быть в безопасности, я использую это отныне:

    window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
...