UIB-кнопка не получает событие при нажатии

В моем приложении для iOS 7 есть UIViewController с UIMapView. Он также имеет небольшой вид с UIB-кнопкой на нем, который отображается над картой, когда пользователь перетаскивает карту за пределы текущей области поиска. Когда он отображается, пользователь может нажать кнопку, чтобы найти другие POI вокруг текущего центра карты.

Я использую Apple BannerViewController из примера кода iAd Suite, чтобы я мог показывать один рекламный баннер в нескольких представлениях. Это потребовало от меня встроить контроллер представления в контейнер, чтобы BannerViewController мог показать / скрыть рекламу. Теперь, когда отображается маленький вид с кнопкой, касание кнопки не вызывает событие Touch Up Inside, как это было раньше.

Я использую Интерфейсный Разработчик и проверил все представления в иерархии представления, и у всех них есть Включенное взаимодействие с пользователем. Вот как выглядит иерархия представлений в IB:

BannerViewControllerMapViewController

Я знаю, что это, наверное, что-то глупое, о чем я не думаю, но я слишком долго смотрю на это и нуждаюсь в помощи.

Заранее спасибо.

ОБНОВЛЕНИЕ № 1:

Я удалил UIButton из маленького представления и заменил его на распознаватель жестов касания и все еще ничего. Похоже, что само представление не получает никаких сенсорных событий.

ОБНОВЛЕНИЕ № 2:

Перенос кнопки на передний план с помощью метода takeSubviewToFront не помогает.

Обновление № 3:

Вот список подпредставлений контроллера представления контейнера:

<__NSArrayM 0x17c74ea0>(
<MKMapView: 0x15ddfe40; frame = (0 0; 320 367); clipsToBounds = YES; autoresize = TM+BM; layer = <CALayer: 0x15de1e90>>,
<UIView: 0x17c00030; frame = (0 317; 320 50); alpha = 0; autoresize = TM+BM; layer = <CALayer: 0x15d42dc0>>,
<_UILayoutGuide: 0x17c000f0; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x17c75400>>,
<_UILayoutGuide: 0x17c00160; frame = (0 0; 0 0); hidden = YES; layer = <CALayer: 0x17c751d0>>
)

2 ответа

Решение

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

Спасибо всем, кто помог мне выследить это.

Если вы пытаетесь использовать симулятор iOS. Пожалуйста, выйдите из симулятора iOS и снова запустите ваше приложение, если в вашем коде есть все, что нужно.

Другие вопросы по тегам