Программно созданные кнопки UIB ниже экрана не работают? - PullRequest
1 голос
/ 10 ноября 2010

Я создаю матрицу коробок с изображениями в них. Для управления касаниями и определения того, какая коробка была нажата, я помещаю одну кнопку UIB внутри каждой коробки, которая невидима, а также размер коробки.

Я добавил прослушиватель событий (извините, я программист на Javascript :)) примерно так:

[button addTarget:self action:@selector(boxTapped:) forControlEvents:UIControlEventTouchUpInside];

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

EDIT: По сути, в общем, все, что находится ниже начального нижнего края экрана, никогда не вызывает действия. Когда половина прямоугольника изначально обрезана, работает только (верхняя) половина, выставленная при первом отображении вида. Нижняя половина не вызовет действие.

Ответы [ 2 ]

2 голосов
/ 10 ноября 2010

Одной из причин является то, что ваши кнопки фактически расположены за пределами границ ваших блоков. Кнопки все еще видны, потому что вы не установили свои блоки, чтобы обрезать что-либо за пределами границ. И, следовательно, эти кнопки не могут принимать какие-либо события ввода.

Вы можете попробовать установить clipsToBounds = YES для своих ящиков и посмотреть, все ли кнопки видны?

1 голос
/ 10 ноября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...