2016-06-16 4 views
1

Добрый вечер. У меня есть два ViewControllers (давайте назовите их A и B) и с помощью метода touchhesBegan. Он работает следующим образом: при просмотре вида A, вид B добавляется как подпункт вида A и появляется с центром, расположенным в месте касания. Но когда я нажимаю на вид B (недавно добавленный), touchBegan из B не вызывается. Я уже установил view.enableUserInteraction в true в обоих представлениях, уже проверенный unsuccesfully nextResponder(). TouchhesBegan. Что я делаю не так ? Обс: Я намерен добавить несколько видов B (ширина = 60, высота = 60) в качестве подзонов вида A.touchsBegan метод не вызывается при добавлении в качестве подсмотра другого вида

ответ

2

Это связано с тем, что на сенсорные события ответил A. Вы должны отключить взаимодействие пользователя A, когда B показывает.

Update:
Попробуйте это:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    if (!self.clipsToBounds && !self.hidden && self.alpha > 0.01) { 
     for (UIView *subview in self.subviews.reverseObjectEnumerator) { 
      CGPoint subPoint = [subview convertPoint:point fromView:self]; 
      UIView *result = [subview hitTest:subPoint withEvent:event]; 
      if (result != nil) { 
       return result; 
      } 
     } 
    } 

    return nil; 
} 
+0

Но я должен добавить несколько из B (width = 60 и height = 60). Если я выключу A, как добавить еще B позже? –

+0

@BrunoBarros Я играю. Вы должны переопределить точку зрения «hitTest» A. Когда вы обнаружили, что подвью было поражено, вы должны доставить это событие. – Lumialxk

+0

nice..could u помочь мне в том, как это сделать? Я был бы рад, если бы вы могли ответить каким-то кодом. tks –

0

У вас есть два вида или два viewControllers? Когда вы запускаете событие, которое загружает вид «B», вызывает .becomeFirstResponder() на ваш объект вида.

+0

Два режима просмотра с двумя соответствующими видами –

+1

вам может понадобиться добавить распознаватель жестов к вашему второму виду, чтобы он мог обрабатывать краны. 'let tap: UITapGestureRecognizer = UITapGestureRecognizer (target: self, action: #selector()' 'view.addGestureRecognizer (tap)', тогда в селекторе запускается любой способ, который вам нужен. – Haligen

+0

Да .. Я сделал это уже и это сработало но я просто хотел знать, почему touchhesBegan не работает. Но tks btw –

Смежные вопросы