Почему мое событие "прикоснуться внутрь" для моего UIButton не называется?
Я сделал много кнопок, и я не могу понять, почему это не сработает.
Моя иерархия настроена следующим образом:
View -> Scroll View -> Subview -> Button
В этом подсмотре есть много других предметов, и каждый из них работает при касании. В конструкторе интерфейса я вижу, что событие "Touch Up Inside" привязано к моему методу
"- (IBAction)favoritesButtonDepressed:(id)sender"
.
Однако, когда я нажимаю кнопку, этот метод никогда не выполняется, и моя точка останова впоследствии не попадает.
Я заметил, что даже когда я удерживаю нажатие на кнопку, ярлык не меняет цвет (даже несмотря на то, что нажимает на подсветку включен), но все же моя другая кнопка в представлении делает.
Взаимодействие с пользователем включено на кнопке, а также на все иерархии.
Для того, чтобы мои объекты в суб-представлении получали события касания, я сделал вид прокрутки похожим на 4-й ответ в этом сообщении.
Ответы
Ответ 1
Ага, я понял. Оказывается, подвид, содержащий содержащую кнопку (вместе с другими элементами управления), имел высоту 740, а кнопка была у Y 781. Перемещая кнопку вверх, проблема была устранена. Поскольку все отображалось правильно, я не думал проверять высоту подзаголовка.
Ответ 2
Я думаю, что вы поместили свою кнопку в UIImageView, если это так, вам нужно включить UserInteraction для этого UIImageView. Пожалуйста, проверьте.
Ответ 3
Если UITapGestureRecognizer
реализован на любом из Super View вашей кнопки. то UIButtonEventTouchUpInside
будет запущен.
вы должны реализовать UITapGestureRecognizer, как это
tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)];
[tapGesture setCancelsTouchesInView:NO]; // This should do what you want
[tapGesture setDelegate:self];
Ответ 4
Убедитесь, что ваша кнопка находится внутри границ супервизора,
Если кнопка находится вне границ супервизора, кнопка не будет кликабельна,
из-за реализации функции hitTest
Ответ 5
Наличие макета выглядит так:
Просмотр → Subview (UIView) → Кнопка
Исправлено отметкой "Включено взаимодействие с пользователем" в атрибутах Subview (UIView).
Ответ 6
Еще одна вещь, которую стоит рассмотреть, - разместить на ней другой вид?
Например, если вы загрузите другой вид из наконечника и неправильно сфотографируете его, он может хорошо появиться поверх кнопки, перехватив любые нажатия.
Вы можете проверить это XCode 6 с контролем "Debug View Heirachy".
Ответ 7
Недавно у меня было что-то подобное;
Попробуйте удалить (IBAction)favoritesButtonDepressed:(id)sender
объявление (IBAction)favoritesButtonDepressed:(id)sender
(и метод) в вашем контроллере и снова перетащить его из интерфейса Builder.
Ответ 8
Пожалуйста, ознакомьтесь со следующими обсуждениями, которые могут помочь вам в работе UIButton "Touch Up Inside" не работает. "Touch Down" отлично работает
UIButton касается внутри события, не работающего в ios5, пока все в порядке в ios6
Событие UIButton "Touch Up Inside" не работает. "Touch Down" отлично работает
Ответ 9
В моем случае IBAction для кнопки не работал, я пытался разными способами. Таким образом, я сделал IBOutlet для кнопки и добавил действие щелчка, используя метод "addTarget", который работал как шарм.
[myButton addTarget:self action:@selector(dismissClickFunction:) forControlEvents:UIControlEventAllEvents];
Ответ 10
У меня такая же проблема.
У меня была кнопка в xib, которую я поместил в представление.
Я оставил экземпляр xib с его маленьким размером по умолчанию, установленным при импорте, потому что я автоматически изменяю его размер в коде для обработки поворота устройства.
Это привело к тому, что кнопка не реагировала на прикосновения, даже если она находилась в центре экрана.
Я исправил это, просто изменив расположение экземпляра xib, чтобы заполнить родительское представление.