Пересылка касания к основному виду с помощью GestureRecogniser


0

У меня есть оверлейный вид, который покрывает многие виды сестры (кнопки).

Я пытаюсь передать штрихи к виду родственного, который под видом наложения, используя этот ответ здесь: https://stackoverflow.com/a/4847478

Это потому, что мой вид наложения имеет GestureRecognisers.

Я хотел бы, чтобы вид наложения мог распознавать жесты (в том числе жесты над кнопками) И передавать все события касания к обозреваемым представлениям под ним.

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

Я не думаю, что можно изменить право собственности на прикосновение.

Как я могу получить нажатие кнопки для регистрации, учитывая, что события фактически пересылаются?

  0

Где добавляется ваша кнопка? на оверлей или ниже наложения? 08 мар. 172017-03-08 09:57:26

  0

@CodeChanger ниже наложения; (прозрачный) наложение закрывает кнопки. 08 мар. 172017-03-08 09:59:52

  0

Является ли ваше наложение прозрачным? Возможно, вы не хотите наложения, но на самом деле просто хотите добавить распознавателя жестов в супер-представление ваших кнопок, вы можете реализовать его делегат, чтобы одновременно с ним распознавать другие распознаватели. Если это звучит как решение для вас, сообщите мне, и я могу предоставить более подробное решение? 08 мар. 172017-03-08 11:44:40

  0

@GeorgeGreen Да, мне не нужен вид наложения. Мне нужны все жесты, которые нужно распознать в SuperView, и передавать штрихи кнопкам, даже если распознан жест. У меня есть IBActions, связанный с событиями TouchUpInside кнопок. Прямо сейчас, даже если кнопки получают касанияBegan, touchsMoved и т. Д., Событие TouchUpInside не срабатывает. Я не хочу реализовывать пользовательское обнаружение TouchUpInside. 08 мар. 172017-03-08 22:28:44

  0

@ignoramus Интересно, если вы удалили оверлей и переместили распознаватели жестов в супер-представление, тогда он должен играть в мяч с другими элементами управления. Не могли бы вы опубликовать код контроллера, который вызывает проблему, и мы можем разобраться с этим? 08 мар. 172017-03-08 22:34:21

  0

@GeorgeGreen Да, это работает. Большое спасибо! Не могли бы вы отправить свой комментарий в качестве ответа, чтобы я мог его принять? 09 мар. 172017-03-09 00:18:18

0

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

Override pointInside: метод на ваш взгляд контейнера и проверьте, прикоснулся вид альфа чем пройти возвращение NO для прохода сообщения к следующему ответчику.

так:

-(BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { 
    for (UIView *view in self.subviews) { 
     if (!view.hidden && view.alpha > 0 && view.userInteractionEnabled && [view pointInside:[self convertPoint:point toView:view] withEvent:event]) 
      return YES; 
    } 
    return NO; 
} 

Надеется, что это поможет вам понять Ответчик цепи Для более подробной информации вы можете проверить это принятый ответ: How can I click a button behind a transparent UIView?

  0

К сожалению, это не сработает, так как мне нужно, чтобы жест был распознан в режиме наложения, независимо от того, было ли нажатие на кнопку или нет. 08 мар. 172017-03-08 10:20:28

  0

Вы пробовали что-то в своем коде? 08 мар. 172017-03-08 10:22:48

  0

Извините, я неправильно понял, я попробую сейчас. 08 мар. 172017-03-08 10:26:19

  0

Но по вашему вопросу вам нужно событие кнопки, а не событие распознавания жестов на кнопке am i right? 08 мар. 172017-03-08 10:26:33

  0

Хорошо, я только что попробовал, и он не работает.Мне нужно событие распознавания жестов во всём оверлейном представлении, в том числе над кнопками. Я отредактировал вопрос, чтобы прояснить это. 08 мар. 172017-03-08 10:37:45

  0

Итак, еще одна вещь, которую вы можете сделать в этом случае, обнаружить кнопку в распознавателе жестов, но для этого вы можете опубликовать код, чтобы мы могли понять, как вы используете кнопку и жест в своем представлении? 08 мар. 172017-03-08 10:51:08