Событие UIButton «Touch Up Inside» не работает. "Touch Down" работает нормально

У меня есть UIButton в UIView, который находится в UIViewController, который я выделил и инициировал из файла .xib.

При подключении IBAction к событию «Touch Down» UIButton он срабатывает правильно. Но если я подключу его к событию «Touch Up Inside», он не отвечает.

Другие события тоже не работают. «Touch Drag Enter», «Touch Drag Exit», «Touch Up Outside» и т. Д. Только Touch Down.

Кто-нибудь знает, почему это может быть?

Богатый


person Rich Brooks    schedule 07.10.2010    source источник
comment
для UIViews userInteractionEnabled установлено значение YES?   -  person Andrew Carter    schedule 17.06.2011
comment
Не могли бы вы поделиться с нами каким-нибудь соответствующим кодом?   -  person Bart Jacobs    schedule 18.06.2011
comment
У меня тоже такая проблема. Мой UIButton находится в настраиваемой ячейке таблицы - я думаю, что tableview делает что-то странное.   -  person nevster    schedule 07.08.2011


Ответы (1)


Во-первых, я могу абсолютно, положительно гарантировать вам, что UIButtons, правильно подключенные в IB, реагируют, как и ожидалось, на внутренние события касания. (Вы можете представить, если бы они этого не сделали ?!)

Учитывая это, можно с уверенностью сказать, что вы не подключили все так, как вы ожидали. Вот несколько вещей, которые стоит попробовать:

  • Сделайте так, чтобы ваше действие распечатало оператор журнала первым делом:

    NSLog(@"%s", __PRETTY_FUNCTION__);

  • Проверьте в IB, что ЕДИНСТВЕННАЯ функция, к которой подключена ваша кнопка, - это прикосновение изнутри. (Позже вы можете связать его с несколькими событиями, но для тестирования мы хотим максимально упростить.)

  • Убедитесь, что размер вашей пуговицы составляет 50 x 50 или больше. (Маленькие кнопки трудно нажимать.)
  • А пока сделайте кнопку прямоугольной с закругленными углами. Если у вас есть кнопка с изображением, а изображение прозрачное, нажимать на нее будет сложно.
  • Убедитесь, что у вас есть правильная подпись для вашего действия:

    - (IBAction) myButtonPressedAction: (id) sender;

  • Чтобы убедиться, что все в порядке, удалите кнопку из вашего .xib и снова добавьте ее.

  • Убедитесь, что для родительского представления установлено userInteractionEnabled.
  • Убедитесь, что FileOwner xib является вашим типом контроллера представления.

Если ничего из этого не помогает, вам придется рассказать нам больше о проблемной области. Возможно, добавьте снимок экрана с настройкой кнопок в IB и фрагменты кода из вашего проекта.

person Olie    schedule 28.06.2011
comment
Убедитесь, что в родительском представлении установлено userInteractionEnabled, сработало для меня! Спасибо - person jt_uk; 01.04.2015